题意是求 比N小且满足(M,N)> 1的M的数的个数Num。根据 N = phi(N) + Num + 1,即可求得,phi(N) :N的欧拉函数。
#include<stdio.h>
int ans;
void Euler(int n){
ans = 1;
for(int i = 2; i * i <= n;++i){
if(!(n%i)){
ans *= i - 1;
n /= i;
while(!(n%i)){
ans *= i;n/=i;
}
}
}
if(n > 1){
ans *= n -1;
}
return ;
}
int main(){
int N;
while(scanf("%d",&N),N){
Eleru(N);
printf("%d\n",N -1 - ans);
}
}