hdu 找新朋友 (欧拉定理)

来源:互联网 发布:java后端 编辑:程序博客网 时间:2024/04/28 12:54

集合[1,N]中与N互质的数的总数目。

欧拉定理(证明过程就免了):

n=P1^k1*P2^k2*.....Pr^kr(P是质数)

f(n)=P1^(k1-1)*(P1-1)  *  P2^(k2-1)*(P2-1)....Pr^(kr-1)*(Pr-1);

#include <stdio.h>int euler(int x){int result=1;int i;for(i=2;i*i<=x;i++){if(x%i==0){result*=i-1;x/=i;while(x%i==0){result*=i;x/=i;}}}if(x>1)result*=x-1;return result;}int main(){int T,n;scanf("%d",&T);while(T--){scanf("%d",&n);printf("%d\n",euler(n));} }