欧拉函数

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(使用前将#替换为@)

欧拉函数 的相关文章

随机推荐

  • 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互