不懂数论。
φ(n)指不大于n与n互素的数的个数 【1,n】。
欧拉函数的几个性质:
1.如果n为质数 那么φ(n)=n−1。(除了它本身 其它所有数与它互素)
2.n=p^k 那么φ(n)=p^k-p^(k-1) (除了p的倍数,其他数都与p互质)
后面两条我并不理解。
3.当gcd(n,m)=1时, φ(nm)=φ(n)∗φ(m) 证明: 因为φ(n)是积性函数。
.
#include<cstdio>
#include<iostream>
using namespace std;
typedef long long ll;
ll euler(ll n){
ll ans=n;
for(int i=2;i*i<=n;i++){
if(n%i==0){
ans=ans/i*(i-1);
while(n%i==0)
n/=i;
}
}
if(n>1)
ans=ans/n*(n-1);
return ans;
}
int main(){
ll n;
while(~scanf("%lld",&n)){
if(n==0)break;
euler(n);
printf("%lld\n",euler(n));
}
return 0;
}