hdu 1286 找新朋友(欧拉函数)

来源:互联网 发布:2016最流行的网络词 编辑:程序博客网 时间:2024/04/28 17:37

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1286

//欧拉函数:设m是一个正整数,则0-(m-1)之间与m互素的整数的个数//m=p1^a1*p1^a2~~pi^ai~~pk^pk;//p1~~pk都为素数,则欧拉函数φ(m)=m*(1-1/p1)*(1-1/p2)~(1-1/pi)~(1-1/pk)   [相乘]#include<stdio.h>#include<string.h>int prim[32780],p;int Prim(){    int i,j;p=1;    for(i=2;i<=32770/2;i++)       for(j=2*i;j<=32770;j+=i)           prim[j]=1;    for(i=2;i<=32770;i++)    if(!prim[i])    prim[p++]=i;}int main(){    int T,i;    memset(prim,0,sizeof(prim));    Prim();    scanf("%d",&T);    while(T--)    {        int N,n,k;        scanf("%d",&N);        n=N;         for(i=1;i<3513;i++)         {             if(N!=1&&N%prim[i]==0)             {                 while(N%prim[i]==0)                 {                     N=N/prim[i];                     k=prim[i];                 }                 n=n-n/k;             }         }         printf("%d\n",n);    }}


原创粉丝点击