在数论中,对于正整数n,欧拉函数就是小于或等于n的正整数中与n互质的数的数目;
例题:
找新朋友
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7583 Accepted Submission(s): 3981
2 25608 24027
7680 16016
思路:找出老朋友,求新朋友,与n有大于1的约数的都是老朋友;
代码:
#include<stdio.h>
#include<string.h>
#define M 400000
int a[M];
int main()
{
int T;
scanf("%d",&T);
while(T--)
{
int n,m,i,j,k,t=0;
scanf("%d",&n);
memset(a,0,sizeof(a));
for(i=2;i<n;i++)
{
for(j=1;j*i<n&&n%i==0;j++)//如果i能被n整除,则小于n的i的倍数都与n有约数;
{
a[j*i]=1;
}
}
for(i=2;i<n;i++)
if(a[i]==1)
t++;
printf("%d\n",n-t-1);
}
return 0;
}