#26151: 為捨麼顯示TLE


qaz7355110@gmail.com (Jerry Lai)


#include <stdio.h>

#include <stdlib.h>

#include <math.h>

 

int main(void)

{

  int a,b,i;

while(scanf("%d",&a)!=EOF)

{

b=sqrt(a);

while(b!=1)

{

if((a%b)==0)

{

printf("非質數\n");

break;

}

else

{

  b--;

}

}

  if(b==1)

  {

  printf("質數\n");

}

}

return 0;

 

不知為何

#26153: Re:為捨麼顯示TLE


yp10871039 ( )


#include

#include

#include

 

int main(void)

{

  int a,b,i;

while(scanf("%d",&a)!=EOF)

{

b=sqrt(a);

while(b!=1)

{

if((a%b)==0)

{

printf("非質數\n");

break;

}

else

{

  b--;

}

}

  if(b==1)

  {

  printf("質數\n");

}

}

return 0;

 

不知為何


測試資料至多有200000筆,且2 ≦ x ≦ 2147483647

若每筆x都是2147483647 , sqrt(x) 的迴圈每次要跑40000多次,很沒效率

建議使用建表法