欧拉函数(C语言实现)

欧拉函数(C语⾔实现)
欧拉函数(Euler's totient function)是指⼩于n的正整数中与n互质的数的数⽬,⽤φ(n)表⽰。特别的,φ(1)=1;
例如:φ(10)=4;1 3 7 9与10互质。
公式:φ(n)=n*(1-1/p(1))*(1-1/p(2))*(1-1/p(3))*...*(1-1/p(n)),其中p(1),p(2),p(3)...p(n)为n的所有质因数,每个质因数只能出现⼀次。例如:φ(8)=8*(1-1/2)=4;1 3 5 7与8互质
ldoφ(10)=10*(1-1/2)*(1-1/5)=4;1 3 7 9与10互质
性质:
1.若n为质数,则φ(n)=n-1;(注意1⾮素数也⾮合数)例如φ(7)=7-1=6;1 2 3 4 5 6(除7外)均与7互质
2.若p为质数,n=p^k,则φ(n)=p^k-p^(k-1)=(p-1)*(p^(k-1));例如φ(9)=φ(3^2)=3^2-3^1=(3-1)*(3^(2-1))=6;1 2 4 5 7 8均与9互质
洗脚
3.若m,n互质,则φ(m*n)=φ(m)*φ(n)=(m-1)*(n-1);
来电不善电影引申:φ(2*n)=φ(2)*φ(n)=(2-1)*φ(n)=φ(n);
欧拉定理:
若a,n为正整数且a,n互质,则a^φ(n) ≡ 1 (mod n)
费马⼩定理:
若p为素数且a,p互质,则a^(p-1) ≡ 1 (mod p)
友情链接:
baike.baidu/item/MOD运算/7885553#4
下⾯放代码:
1 #include<stdio.h>
2 #include<math.h>
3int eular(int n)
4 {
5int res=n;
6for(int i=2;i<=sqrt(n);i++)//判断n是否为质数无锡日报女记者章莹
7    {
8if(n%i==0)res=res/i*(i-1);//res=res*(1-1/i)先进⾏除法防⽌溢出
9while(n%i==0)n/=i;
10    }椰子剥壳机
11if(n>1)res=res/n*(n-1);
12return res;
13 }
14int main()
ABOVING
15 {
16int n;
17    scanf("%d",&n);
18    printf("%d",eular(n));
19return0;
20 }
谢谢观看,如有问题欢迎提出并指正。

本文发布于:2024-09-21 01:46:09,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/399814.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:欧拉   质因数   问题   素数   欢迎
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议