hdu 1787 GCD Again (欧拉函数在线模板)
来源:互联网 发布:a算法八数码问题 编辑:程序博客网 时间:2024/05/20 08:21
欧拉函数定义:小于或等于n的数中,与n互质的数的数目
如,euler(16)=8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16,其中与n互质(与n的最大公因数是1的)的有1 3 5 7 9 11 13 15共8个,其中n本身显然不是
本题,显然是求n中剩下的数目,在减去1。即n-euler(n)-1
在线求就好,不存在数组里。
根据欧拉函数求值方法可以直接写出euler()
1.euler(1)=1
2.若n是素数p的k次幂,euler(n)=p^k-p^(k-1)=(p-1)*p^(k-1);//也就是如74可以分解成2^3*3^2,就是(p-1)*(q-1)*q^(k1-1)*p*(k2-1);
3.若m,n互质,euler(mn)=euler(m)euler(n)//也就是说上面的72可以分解为8和9,分别用(2)求
#include <iostream>#include <cstdio>using namespace std;int Euler(int n){ int ans=1; for(int i=2;i*i<=n;i++) { if(n%i==0) { n/=i; ans*=(i-1); while(n%i==0) { n/=i; ans*=i; } } } if(n>1) ans*=n-1;//这里有*。。如13*8*9,对13的处理 return ans;}int main(){ int n; while(scanf("%d",&n))//scanf { if(n==0) break; cout<<n-Euler(n)-1<<endl; } return 0;}
0 0
- hdu 1787 GCD Again (欧拉函数在线模板)
- HDU 1787 GCD Again 【欧拉函数模板】
- hdu 1787 GCD Again 欧拉函数
- HDU 1787 GCD Again 欧拉函数
- HDU 1787 GCD Again (欧拉函数)
- HDU 1787 GCD Again/HDU 2824 The Euler function(欧拉函数模板)
- hdoj 1787 GCD Again (欧拉函数模板 )
- hdu GCD Again(欧拉函数)
- hdu 1787 GCD Again 欧拉函数小水水 数论
- GCD Again HDU杭电1787【欧拉函数】
- HDU 1787 GCD Again (欧拉函数)
- HDU 1787 GCD Again (欧拉函数)
- hdu1787 GCD Again 欧拉函数在线算法 待补完
- HDOJ GCD Again 1787【欧拉函数】
- HDOJ-1787 GCD Again(欧拉函数)
- 欧拉函数:HDU1787-GCD Again(欧拉函数的模板)
- hdoj 1787 GCD Again(欧拉函数)
- HDOJ 题目1787 GCD Again(欧拉函数)
- 数据挖掘十大经典算法
- Android性能优化大纲(自我总结)
- vbs给word和wps上个u盘锁
- 在c/c++中的&、|和&&、||的区别(易混淆)
- 《C和指针》 第三章 数据(2)
- hdu 1787 GCD Again (欧拉函数在线模板)
- Mapreduce算法五、mapJoin与标识
- C++模板类内友元(友元函数,友元类)声明的三种情况
- POJ 3761 Bubble Sort (乘方取模)
- 设备
- hdoj-【3555 Bomb】
- greendao3.0以上使用步骤(一):基础使用
- 如何判断文件大小?
- 你知道顺汇与逆汇的差别吗!