hdu1286 找新朋友

筛选法,嘿嘿,看了大牛的代码的……

#include<stdio.h>  
#include<string.h>  
int n,num[40000];  
int main( )  
{  
    int t;  
    scanf( "%d",&t );  
    num[0] = num[1] = 0;  
    while( t-- )  
    {  
           scanf( "%d",&n );  
           memset( num,0,sizeof( num ) );  
           for( int i = 2; i <= n / 2; ++i )  
                for( int j = 1; j * i < n; ++j )//从1开始,因为i可能也是n的约数  
                {//找出和n有相同约数的数  
                     if( n % i )//如果不是约数,就不要遍历  
                         break;  
                     else 
                         num[i*j] = 1;  
                 }  
           int sum = 0;  
           for( int i = 1; i < n; ++i )  
                if( !num[i] )  
                    ++sum;//找新朋友  
           printf( "%d\n",sum );  
           }  
    return 0;  
} 
原文地址:https://www.cnblogs.com/nanke/p/2122016.html