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;
}

浙公网安备 33010602011771号