参考代码:
#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语言训练-8除不尽的数 (C语言代码)暴力解法,答案只有一个,直接输出就好了浏览:1018 |
C语言训练-阿姆斯特朗数 (C语言代码)浏览:853 |
C二级辅导-公约公倍 (C语言代码)浏览:2123 |
C语言程序设计教程(第三版)课后习题4.9 (C语言代码)浏览:692 |
C语言训练-字符串正反连接 (C语言代码)浏览:622 |
母牛的故事 (C语言代码)浏览:435 |
A+B for Input-Output Practice (V) (C语言代码)浏览:625 |
IP判断 (C语言描述,蓝桥杯)浏览:1095 |
C语言程序设计教程(第三版)课后习题10.3 (C语言代码)浏览:1919 |
C语言程序设计教程(第三版)课后习题5.6 (C语言代码)浏览:564 |