description:欧拉函数用于求解与n互质且小于或等于n的数的个数 。例如 数8, 与8互质且小于等于8的数有1, 3, 5,7四个
算法分析: euler(n) = n *(1- 1/p1) *( 1- 1/p2) *( 1- 1/p3)*........其中p1,p2,p3..........为素数并且整除n
code:
#include <iostream> using namespace std; int isprime(int n) { if (n == 1) return 0; for (int i = 2; i*i<=n; i++) { if (n % i == 0) return 0; } return 1; } int Euler(int n) { int res = n; for (int i = 2; i*i<=n; i++) { if (n%i == 0 && isprime(i)) //为素数并且整除n res = res/i * (i-1); } return res; } int main() { int n; while (cin >> n) { cout << Euler(n)<< endl; } return 0; }
版权声明:本文为博主原创文章,未经博主允许不得转载。
原文地址:http://blog.csdn.net/xiaotan1314/article/details/47205059