我的程式碼
#include <stdio.h>
#include <math.h>
int main()
{
int x,i,j;
while((scanf("%d",&x))!=EOF)
{
if(x<2||x>2147483647)
printf("錯誤");
for(i=2;i<x;i++)
{
if(x%i!=0)
printf("質數\n");
else if(x%i==0)
printf("非質數\n");
break;
}
}
return 0;
}
個人感覺沒什麼錯...但就出現WA了...該如何修改呢?據說這題要用排列的方式打!?那是什麼??
上面那個程式碼好像不能測1和2... 所以我用暴力法解 (還是不行阿=^=
#include <stdio.h>
#include <math.h>
int main()
{
int x,i,j;
while((scanf("%d",&x))!=EOF)
{
if(x<2)
printf("非質數\n");
else if(x==2)
printf("質數\n");
else{
for(i=2;i<x;i++)
{
if(x%i!=0)
printf("質數\n");
else if(x%i==0)
printf("非質數\n");
break;
}
}
}
return 0;
}