欧拉函数

2023-11-13

在数论中,对于一整数n来说,欧拉函数是指:1~n-1中与n互质的数的个数。又称φ函数、欧拉商数等。
例如φ(8)=4,因为1,3,5,7均和8互质。
从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明。 

  φ函数的值 
  φ(1)=1(唯一和1互质的数就是1本身)。 
若n是质数p的k次幂,φ(n)=p^k-p^(k-1)=(p-1)p^(k-1),因为除了p的倍数外,其他数都跟n互质。 
  欧拉函数是积性函数——若m,n互质,φ(mn)=φ(m)φ(n)。
  证明:设A, B, C是跟m, n, mn互质的数的集,据中国剩余定理,A*B和C可建立一一对应的关系。因此φ(n)的值使用算术基本定理便知, 
  若 n= ∏p^(α(下标p))
  p|n 
  则φ(n)=∏(p-1)p^(α(下标p)-1)=n∏(1-1/p)
  p|n p|n 
  例如φ(72)=φ(2^3×3^2)=(2-1)2^(3-1)×(3-1)3^(2-1)=24
  与欧拉定理、费马小定理的关系 
  对任何两个互质的正整数a, m, m>=2有 
  a^φ(m)≡1(mod m)
  即欧拉定理 
  当m是质数p时,此式则为: 
  a^(p-1)≡1(mod m)

  即费马小定理。

#include "stdio.h"
#include "string.h"
#include "stdlib.h"

int Euler(int n)
{
int i;
int result;

result=n;

for(i=2; n!=1; i++)
{
   if(n%i)
    continue;
   else
    result=result/i*(i-1);   //(p-1)*p^(k-1)
   
   while(n%i==0)
    n/=i;
  
}

return result;

}


int main()
{
int n;
while(scanf("%d",&n) && n)
{
    
   printf("%d\n",Euler(n));
}
return 0;

}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

欧拉函数 的相关文章

  • WPF DataGrid 多选

    我读过几篇关于这个主题的文章 但很多都是来自 VS 或框架的早期版本 我想做的是从 dataGrid 中选择多行并将这些行返回到绑定的可观察集合中 我尝试创建一个属性 类型 并将其添加到可观察集合中 它适用于单个记录 但代码永远不会触发多个
  • 在模板类中声明模板友元类时出现编译器错误

    我一直在尝试实现我自己的链表类以用于教学目的 我在迭代器声明中指定了 List 类作为友元 但它似乎无法编译 这些是我使用过的 3 个类的接口 Node h define null Node
  • 没有特殊字符的密码验证器

    我是 RegEx 的新手 已经进行了大量搜索 但没有找到任何具体内容 我正在编写一个验证密码字符串的正则表达式 可接受的字符串必须至少具有 4 种字符类型中的 3 种 数字 小写字母 大写字母 特殊字符 我对包含有一个想法 也就是说 如果这
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • std::vector 与 std::stack

    有什么区别std vector and std stack 显然 向量可以删除集合中的项目 尽管比列表慢得多 而堆栈被构建为仅后进先出的集合 然而 堆栈对于最终物品操作是否更快 它是链表还是动态重新分配的数组 我找不到关于堆栈的太多信息 但
  • 传递给函数时多维数组的指针类型是什么? [复制]

    这个问题在这里已经有答案了 我在大学课堂上学习了 C 语言和指针 除了多维数组和指针之间的相似性之外 我认为我已经很好地掌握了这个概念 我认为由于所有数组 甚至多维 都存储在连续内存中 因此您可以安全地将其转换为int 假设给定的数组是in
  • 如何从本机 C(++) DLL 调用 .NET (C#) 代码?

    我有一个 C app exe 和一个 C my dll my dll NET 项目链接到本机 C DLL mynat dll 外部 C DLL 接口 并且从 C 调用 C DLL 可以正常工作 通过使用 DllImport mynat dl
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 如何在 C++ 中标记字符串?

    Java有一个方便的分割方法 String str The quick brown fox String results str split 在 C 中是否有一种简单的方法可以做到这一点 The 增强分词器 http www boost o
  • 用于 FTP 的文件系统观察器

    我怎样才能实现FileSystemWatcherFTP 位置 在 C 中 这个想法是 每当 FTP 位置添加任何内容时 我都希望将其复制到我的本地计算机 任何想法都会有所帮助 这是我之前问题的后续使用 NET 进行选择性 FTP 下载 ht
  • 人脸 API DetectAsync 错误

    我想创建一个简单的程序来使用 Microsoft Azure Face API 和 Visual Studio 2015 检测人脸 遵循 https social technet microsoft com wiki contents ar
  • 在 Unity 中实现 Fur with Shells 技术

    我正在尝试在 Unity 中实现皮毛贝壳技术 http developer download nvidia com SDK 10 5 direct3d Source Fur doc FurShellsAndFins pdf Fins 技术被
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 如何定义一个可结构化绑定的对象的概念?

    我想定义一个concept可以检测类型是否T can be 结构化绑定 or not template
  • C 编程:带有数组的函数

    我正在尝试编写一个函数 该函数查找行为 4 列为 4 的二维数组中的最大值 其中二维数组填充有用户输入 我知道我的主要错误是函数中的数组 但我不确定它是什么 如果有人能够找到我出错的地方而不是编写新代码 我将不胜感激 除非我刚去南方 我的尝
  • 如何在当前 Visual Studio 主机内的 Visual Studio 扩展中调试使用 Roslyn 编译的代码?

    我有一个 Visual Studio 扩展 它使用 Roslyn 获取当前打开的解决方案中的项目 编译它并从中运行方法 程序员可以修改该项目 我已从当前 VisualStudioWorkspace 成功编译了 Visual Studio 扩
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern

随机推荐

  • Linux常用语法

    文章目录 第一章 Linux概述 第二章 Linux常用命令 第一讲 进入某个路径 第二讲 查看日志 VI 查看静态日志 tail watch 实时日志 tail 搭配使用参数 查看日志目标行 导出日志 查看当前路径下文件 按文件名查找文件
  • STM32定时器输入捕获

    STM32定时器输入捕获 用STM32F429做定时器捕获PWM波形 测出波形的周期 频率以及占空比 正向脉宽 基本原理 定时器的输入捕获主要是为了测量输入信号的频率 脉宽 占空比等信息 需要理解stm32定时器的基本结构 主要理解这些框起
  • object-c 入门基础篇

    大部分有一点其他平台开发基础的初学者看到XCode 第一感想是磨拳擦掌 看到Interface Builder之后 第一感想是跃跃欲试 而看到Objective C的语法 第一感想就变成就望而却步了 好吧 我是在说我自己 如果你和我一样 对
  • 关于char ** 如何赋值

    前段时间遇到了个问题 需要返回二维字符串数组 每行单独输出字符串 正常思路利用两个for循环挨个对每个字符进行赋值 如下 for int i 0 i lt x i for int j 0 j lt y j char i j 毕竟用两个for
  • Oracle复制行记录到同一个表(两种写法)

    Oracle复制行记录到同一个表 两种写法 通过循环 判断记录是否存在 不存在时插入数据 插入数据时 可以更新插入数据指定字段的值 请根据实际项目需要改写SQL DECLARE CURSOR dept cursor IS SELECT FR
  • C++杨辉三角(初学)

    01 C 的 杨辉三角之 第一个版本 就是最基础的 输入行数 输出打印的图形 话不多说 代码如下 include
  • Latex 特殊章节符号 (§)

    latex 的 tex 文件中 要引用的部分 S ref l 其中 S 大写 对应 l为要引用的章节对应的标签 即要引用的章节 section XXXX label l
  • java的 violate 和 synchronize

    volatile 意思是说这个变量 不必用本地副本优化 保证所有线程直接操作主存中的变量 是真正共享的 volatile讲的是可见性 跟原子操作 线程安全无关 synchronized 常常被强调的意思是互斥 保证只有一个线程进入 其实它还
  • Flutter videoplayer

    视频播放项目地址 效果图 从pub dev搜索视频播放库 但都不能满足要求 最后下载flick video项目代码 做了功能简化和修改 实现功能 列表播放时 不支持拖动修改进度亮度声音 避免滑动冲突 全屏和单一视频播放时支持 1 屏幕左侧上
  • org.apache.ibatis.exceptions.PersistenceException:

    org apache ibatis exceptions PersistenceException Error building SqlSession The error may exist in com map UserMapper xm
  • 自己的第一个DS18B20温度传感器驱动程序(简单)

    基于msp430F149系列单片机 DQ连接到PORT6 5引脚 释放总线 即 空闲状态 因为连接上拉电阻 所以单总线在空闲状态时 一直处于高电平 include 430IO h I O口定义 define DS DIR P6DIR bit
  • Python 2.打开摄像头,保存图片 OpenCV Linux

    import numpy as np import cv2 调用笔记本内置摄像头 所以参数为0 如果有其他的摄像头可以调整参数为1 2 cap cv2 VideoCapture 0 while True 从摄像头读取图片 sucess im
  • 基于用户的协同过滤推荐算法原理和实现

    在推荐系统众多方法中 基于用户的协同过滤推荐算法是最早诞生的 原理也较为简单 该算法1992年提出并用于邮件过滤系统 两年后1994年被 GroupLens 用于新闻过滤 一直到2000年 该算法都是推荐系统领域最著名的算法 本文简单介绍基
  • 空字符 空格字符(字符) 空字符串 NULL的区别

    1 空字符 空格字符 字符 2 空字符串 3 NULL的区别 1 1 字符 1 首先必须明确字符型 char 是整数类型 其在内存单元是以整数形式存放 2 其次 char类型的产生是为了用于 存储字母 数字 标点字符 非打印字符 3 为方便
  • redis学习:redis五大数据类型的之String(字符串)

    String作为redis使用最多的最广泛的数据类型 一些String的基础方法 命令 描述 示例 APPEND key value 向指定的key的value后追加字符串 127 0 0 1 6379 gt set msg hello O
  • java 登录注册课题设计_JavaWeb笔记——注册登录系统项目思路

    功能 gt 注册 gt 登录 JSP login jsp gt 登录表单 regist jsp gt 注册表单 index jsp gt 主页 只有登录成功才能看到 Servlet LoginServlet RegistServlet Se
  • jupyter notebook打不开无反应 浏览器未启动的问题

    解决办法一 将http localhost 8888 tree复制到浏览器打开 此种方法每次需要重新输入 或复制链接 略显麻烦 解决办法二 1 win r 然后输入cmd 回车打开命令窗口 2 在命令窗口中输入jupyter noteboo
  • 【Java学习笔记】API:线程

    线程API 线程的生命周期图 线程方法 run方法用于定义线程任务 interrupt方法用于中断线程 yield用于让出CPU时间 start方法用于启动线程 创建线程有两种方式 常见线程有两种方式 方式一 继承Thread并重写run方
  • WPF--关于Action事件小结

    WPF 关于Action事件小结 1 需要类实例去调用事件建立订阅关系 public event Action
  • 欧拉函数

    在数论中 对于一整数n来说 欧拉函数是指 1 n 1中与n互质的数的个数 又称 函数 欧拉商数等 例如 8 4 因为1 3 5 7均和8互质 从欧拉函数引伸出来在环论方面的事实和拉格朗日定理构成了欧拉定理的证明 函数的值 1 1 唯一和1互