题意:
给出一个正整数n,求小于n且与n互素的正整数有多少个
分析:
本题是简单的欧拉函数,直接套用《数论应用》里面,优化后的欧拉函数代码就好了。
#include<iostream>
#include<cstdio>
#include<cstdlib>
using namespace std;
int phi(int n){
int rea=n,i;
for(i=2;i*i<=n;i++)
if(n%i==0){
rea=rea-rea/i;
while(n%i==0) n/=i;
}
if(n>1)
rea=rea-rea/n;
return rea;
}
int main(){
int n;
while(~scanf("%d",&n)&&n)
printf("%d\n",phi(n));
return 0;
}