1、歐拉函數的應用,水題。
2、理解歐拉函數公式的原理,找到因數後記得篩掉倍數,剩下一項記得乘。
#include<cstdio>
#include<iostream>
using namespace std;
int euler(int n) { //歐拉函數
int res=n;
for(int i=2;i*i<=n;i++) {
if(n%i==0) res=res/i*(i-1);
while(n%i==0) n/=i; //篩掉倍數
}
if(n>1) res=res/n*(n-1); //撿漏的一項
return res;
}
int main()
{
int n;
while(cin>>n && n) {
cout<<n-euler(n)-1<<endl;
}
return 0;
}