我已經盡力了 不知道還能改善什麼
每次出來都是TLE
-------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int main()
{
int i,j,c;
while(scanf("%d",&j)!= EOF)
{
for(i=2; i<=j ;i++)
{
if(j%i == 0)
{
c++;
}
}
if(c == 1)
{
printf("質數");
}
else
{
printf("非質數");
}
c =0;
}
return 0;
}
我已經盡力了 不知道還能改善什麼
每次出來都是TLE
-------------------------------------------
#include
#include
int main()
{
int i,j,c;
while(scanf("%d",&j)!= EOF)
{
for(i=2; i<=j ;i++)
{
if(j%i == 0)
{
c++;
}
}
if(c == 1)
{
printf("質數");
}
else
{
printf("非質數");
}
c =0;
}
return 0;
}
將迴圈改寫 for(i=2; i<=sqrt(j) ;i++), 跑迴圈的次數會少很多
後面程式的寫法也有些問題要修改,我的做法是當j%i==0就 break 不要再跑迴圈,
因為可以被某數整除就不是質數
要先排除 1, 2, 3 ,1不是質數, 2, 3是質數
我已經盡力了 不知道還能改善什麼
每次出來都是TLE
-------------------------------------------
#include
#include
int main()
{
int i,j,c;
while(scanf("%d",&j)!= EOF)
{
for(i=2; i<=j ;i++)
{
if(j%i == 0)
{
c++;
}
}
if(c == 1)
{
printf("質數");
}
else
{
printf("非質數");
}
c =0;
}
return 0;
}
將迴圈改寫 for(i=2; i<=sqrt(j) ;i++), 跑迴圈的次數會少很多
後面程式的寫法也有些問題要修改,我的做法是當j%i==0就 break 不要再跑迴圈,
因為可以被某數整除就不是質數
要先排除 1, 2, 3 ,1不是質數, 2, 3是質數
j%i==0 要 這樣嗎 if(j%i==0&&j!=i) break;?
還有就是 為什麼要取j的平方根?~
我已經盡力了 不知道還能改善什麼
每次出來都是TLE
-------------------------------------------
#include
#include
int main()
{
int i,j,c;
while(scanf("%d",&j)!= EOF)
{
for(i=2; i<=j ;i++)
{
if(j%i == 0)
{
c++;
}
}
if(c == 1)
{
printf("質數");
}
else
{
printf("非質數");
}
c =0;
}
return 0;
}
將迴圈改寫 for(i=2; i<=sqrt(j) ;i++), 跑迴圈的次數會少很多
後面程式的寫法也有些問題要修改,我的做法是當j%i==0就 break 不要再跑迴圈,
因為可以被某數整除就不是質數
要先排除 1, 2, 3 ,1不是質數, 2, 3是質數
j%i==0 要 這樣嗎 if(j%i==0&&j!=i) break;?
還有就是 為什麼要取j的平方根?~
只要寫 if(j%i==0) break; 就行了,因 i的迴圈只做到<=sqrt(j)而以,所以j!=i。
用sqrt(j)是判斷質數常用的方法之一,有人會用 j/2,但sqrt(j)<=j/2,可以少了一些不必要的迴圈數