Shirlies
宁静专注认真的程序媛~

欧拉函数φ(x)=x(1-1/p1)(1-1/p2)(1-1/p3)(1-1/p4)…..(1-1/pn),其中p1, p2……pn为x的所有质因数,x是不为0的整数。φ(1)=1(唯一和1互质的数就是1本身)。 (注意:每种质因数只一个。比如12=2*2*3

  

欧拉公式

那么φ(12)=12*(1-1/2)*(1-1/3)=4)

#include "stdio.h"

int prime[10000]={1,2,3};

int main()
{
 int t;
 int n;
 int count;
 int i,k=3,j,ok;

 for(i=4;i<32768;i++)
 {
  ok=1;
  for(j=1;j<k;j++)
  {
   if(i%prime[j]==0)
   {
    ok=0;
    break;
   }
  }
  if(ok)
   prime[k++]=i;
 }


 scanf("%d",&t);
 while(t--)
 {
  scanf("%d",&n);
  count=n;

  for(i=1;i<n&&i<k;i++)
  {
   if(n%prime[i]==0)
    count=count/prime[i]*(prime[i]-1);
  }

  printf("%d\n",count);
 }

 return 0;
}

posted on 2012-01-18 17:26  Shirlies  阅读(167)  评论(0编辑  收藏  举报