初等数论中的欧拉公式
2013-04-15 22:43
162 查看
求小于n的数里,与n互为素数的个数
一.
奇数和偶数是否一定互素(排除1,不是比如6和9);1和不和任意数互素(比如6采用欧拉定理验证下)。
若n已经进行唯一分解,直接欧拉公式。
如果n的标准素因子分解式是p1^a1*p2^a2*……*pm^am,其中众pj(j=1,2,……,m)都是素数,而且两两不等。则有 φ(n)=n(1-1/p1)(1-1/p2)……(1-1/pm) 利用容斥原理可以证明它。
二.不知唯一分解
一.
奇数和偶数是否一定互素(排除1,不是比如6和9);1和不和任意数互素(比如6采用欧拉定理验证下)。
若n已经进行唯一分解,直接欧拉公式。
如果n的标准素因子分解式是p1^a1*p2^a2*……*pm^am,其中众pj(j=1,2,……,m)都是素数,而且两两不等。则有 φ(n)=n(1-1/p1)(1-1/p2)……(1-1/pm) 利用容斥原理可以证明它。
二.不知唯一分解
#include<iostream> #include<stdio.h> using namespace std; int main() { int n,i; double sum; while(scanf("%d",&n)&&n) { sum=n; //还是运用了欧拉公式 if(n%2==0)//2也是素数 { sum*=(double)(1 - 1.0/2);//为了突出关系写成了 (1 - 1.0/2) ,里面一定是1.0 while(n%2==0) n/=2; } /*类似筛法的思想,已经去掉了2及其倍数,下面找奇因子,必须从小到大枚举, 3枚举到的话立马除尽3及其倍数防止再次枚举9(这样就不对了) */ for(i=3;n>1;i+=2) { if(n%i==0) sum*=(1-(double)1/i); while(n%i==0) n/=i; } printf("%d\n",(int)sum); } //while(1); return 0; }
相关文章推荐
- 初等数论四大定理之——费马小定理
- 无题之看过初等数论后心情
- CDU集训代码:初等数论
- 夜深人静写算法(五)- 初等数论
- 初等数论四大基本定理
- 初等数论学习
- 初等数论
- 【原创】(一)用Python玩转初等数论之质数
- 【初等数论】 05 - 指数和原根
- 初等数论_5 2016.4.6
- 初等数论之算术基本定理
- 【初等数论】 06 - 不定方程
- 初等数论总结(填坑)
- 初等数论四大定理(威尔逊定理,欧拉定理,中国剩余定理,费马小定理)
- 一个初等数论问题的编程
- 20140911 【 初等数论 】 51nod 1242 . 斐波那契数列的第N项
- 初等数论_1 2016.3.30
- 20140911 【 初等数论 】 51nod 1113 . 矩阵快速幂
- 洛谷2312:解方程(初等数论)
- 初等数论笔记