参考代码:
#include<iostream> using namespace std; int a[30]={0}; int i=1;//避免数组越界 bool prime(int n)//素数判断 { if(n<2) return false; for(int i=2;i*i<=n;i++) { if(n%i==0) return false; } return true; } void f(int n) { int s=n; int x=2; while(n>1)//while循环用来分解质因数 { if(n%x==0) { n=n/x; if(x!=a[i-1]) { a[i++]=x;//并找出不相同的质因数 放入a数组中 } } else { x++; } } long long sum1=1; long long sum=1; for(int j=1;j<i;j++) { sum1*=a[j]; } for(int j=1;j<i;j++) { sum*=(a[j]-1); } cout<<sum*s/sum1<<endl;//套用欧拉函数公式 求出互质的数的个数 } int main() { a[0]=1; int n; while(cin>>n) { if(prime(n)) { cout<<n-1<<endl; }//如果是素数的话 那么除了它本身 其余所有的数都与它互质 else f(n); } return 0; }
0.0分
0 人评分
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:885 |
C语言训练-求s=a+aa+aaa+aaaa+aa...a的值 (C语言代码)浏览:691 |
C语言程序设计教程(第三版)课后习题9.2 (C语言代码)浏览:556 |
母牛的故事 (C语言代码)浏览:940 |
剪刀石头布 (C语言代码)浏览:1432 |
1162答案错误,为什么浏览:640 |
回文数(一) (C语言代码)浏览:1117 |
非常简单的算法,题解1049:C语言程序设计教程(第三版)课后习题11.1 (C语言代码)浏览:608 |
C语言程序设计教程(第三版)课后习题8.1 (C++代码)浏览:587 |
DNA (Java代码)浏览:919 |