题意:给你一个数n,n很大(n<=100000000),但是题目中的测试数据不是很多,这样的话直接用求单个欧拉函数值的方法求解,如果用前面那种方法打个表的话是行不通的,因为n的值太大不适合开设数组,所以这时应该直接求n的欧拉函数值。
代码实现:
#include<iostream> #include<cmath> using namespace std; int main() { int n,i,temp; while(scanf("%d",&n)!=EOF) { temp=n; for(i=2;i*i<=n;i++) { if(n%i==0) { while(n%i==0) n=n/i; temp=temp/i*(i-1); } if(n<i+1) break; } if(n>1) temp=temp/n*(n-1); printf("%d\n",temp); } return 0; }