[C/C++基礎]-判斷輸入數字是否為質數
[C/C++基礎]-判斷輸入數字是否為質數
判斷質數一直是很基本的問題,所以我也不免俗的PO一下,有興趣的(C/P)同好,當然歡迎(C/P)一下。
程式碼 |
#include<stdio.h> main()
{
int i,j; bool k=true; scanf("%d",&i);
for(j=2;j<i;j++) {
if(i%j==0) {
k=false; break; }
}
if(k==true) {
printf("質數\n"); }
else {
printf("非質數\n"); }
}
|
6 thoughts on “[C/C++基礎]-判斷輸入數字是否為質數”
上面的程式好像不能被標準c的編譯器來編譯
他把1判斷為質數欸@@
版主回覆:(11/04/2015 12:46:06 PM)
抱歉,當初沒注意到,下面在出更正版
#include <stdio.h>
main()
{
int i,j;
int k=1;
scanf("%d",&i);
for(j=2;j<i;j++)
{
if(i%j==0)
{
k=0;
break;
}
}
if((i>1)&&k==1)
{
printf("質數\n");
}
else
{
printf("非質數\n");
}
}
要怎做範圍內的質數總數?
版主回覆:(11/24/2014 01:45:53 PM)
#include<stdio.h>
main()
{
int i,j,l;
int k=1;
i=10;//scanf("%d",&i);
printf("質數:\t");
for(l=0;l<i;l++)
{
for(j=2;j<l;j++)
{
if(l%j==0)
{
k=0;
break;
}
}
if((l>1)&&(k==1))
{
printf("%d;\t",l);
}
k=1;
}
printf("\n");
}
//執行結果 http://codepad.org/lMO93RWh
輸入99或81他都顯示質數
版主回覆:(11/04/2015 12:44:50 PM)
我用codepad執行結果如下,都顯示非質數,給您參考一下
http://codepad.org/eXqYfBCv
http://codepad.org/dabfTHEh
for(j=2….
為什麼 j 不能等於1
版主回覆:(11/17/2015 01:39:19 PM)
因為任何數都可以被1整除
另外1不是質數
以上
你忘了加上2這個條件
2可以被2整除
但是它是質數
版主回覆:(01/09/2016 09:15:24 AM)
我有考慮到,因為當輸入二時
並不會進入迴圈判斷
所以會直接回應值數
下面連結是線上執行結果
http://codepad.org/QO8dn5pP