hdu 1787

#include<stdio.h>
#include<math.h>
int huzhi(int n) {//欧拉函数公式
int i,j=n;
for(i=2;i<(int)sqrt(1.0*n)+1;i++)
if(n%i==0) {
j=j/i*(i-1);
while(n%i==0)//保证i都是素数
n/=i;
}
if(n>1)//当n为2时用到此步
j=j/n*(n-1);
return j;
}
int main() {
int n;
while(scanf("%d",&n),n) {
printf("%d ",n-huzhi(n)-1);//减除1和互质的
}
return 0;
}
原文地址:https://www.cnblogs.com/thefirstfeeling/p/4410905.html