首页 > 代码库 > hdu 1286 找新朋友

hdu 1286 找新朋友

http://acm.hdu.edu.cn/showproblem.php?pid=1286

也是筛法,但感觉...囧...有点不真实...好吧

 1 #include<stdio.h> 2 #include<string.h> 3 #define MAX 33000 4 int a[MAX]; 5 int main() 6 { 7     int i,j,n,x,k,num; 8     scanf("%d",&n); 9     while(n--)10     {11         scanf("%d",&x);num=0;
12 memset(a,0,sizeof(a));13 for(i=2;i<=x/2+1;i++)14 if(x%i==0)15 {16 for(k=i;k<x;k+=i) //这行很重要,否则有超时的风险(虽然尝试了也AC了吧....囧)17 a[k]=1;18 19 }20 for(i=1;i<x;i++)21 {22 if(a[i]==0)23 num++;24 } 25 printf("%d\n",num); 26 } 27 28 }

 这题还有个方法用欧拉函数,好像直接就能求出规定范围内与n互质的整数个数(⊙o⊙)

http://blog.csdn.net/gray_1566/article/details/24491811

还没好好看这个,先mark下。