#include
#include
void Prime_Number(int);
void main(){
int num;
printf("請輸入一個整數:");
scanf("%d",&num);
Prime_Number(num);
printf("\n");
}
void Prime_Number(int n){
int i, j;
bool flag;
printf("1~%d以內的質數有:\n",n);
for(i=1 ; i<=n ;i ){
flag = true;
for(j=2 ; j<=i-1 ; j ){
if(i%j == 0){
flag = false;
break;
}
}
if(flag == true){
printf("%d\t",i);
}
}
}
裡面如果遞增符號消失 那是YAHOO把它弄消失的
這是我在範例看到的
不知道為什麼用巢狀for這樣寫呢?當i=1...要執行到迴圈不符合break,
跳出後的if(flag == true){
printf("%d\t",i);
譬如在j=4跳出,那不就只執行此變數值去判斷if true?既然flag = false了為什麼還要再去檢查是不是true呢?還有這樣不就要執行2~n-1次*n個回合次...??
還有為什麼可以不需要return 0?要怎麼分辨哪時候要return呢??
2007-02-28 08:40:11 · 3 個解答 · 發問者 finalholy 1 in 電腦與網際網路 ➔ 程式設計
這code功能是要找 使用者輸入的數~1有幾個值數 並列印出來!
<除了本身與1外 不能被整除的數>
i是使用者輸入的數(被除數) 迴圈內會遞減
j是由2開始的除數 迴圈內會遞增 直到遞增至使用者輸入值-1
只要有執行break命令的 就不是質數 flag=false
再利用if(flag == true)來判斷是否列印出來
還有 我個人認為迴圈內 i從2~使用者輸入值 就ok了 不需要從1
1一定不是質數
ex 使用者輸入9 我要找從2~9 有幾個是質數
i=2 2%2 ==0 break; false ; 不列印
i=3 3%2 !=0 ; true ;3是質數
i=4 4%2 ==0 break ; flase ; 不列印
i=5 5%2 5%3 5%4 !=0(皆不) ; true ; 5是質數
等等.....
不知道你看不看的懂 @@
void Prime_Number(int);
你複函式宣告 成為void 表示不需要回傳值 return不需要寫
如果宣告成int double float char等等的就必須要return了!!
2007-02-28 14:57:56 補充:
http://www.life-tech.idv.tw/math/prime.htm
線上檢查值數的網頁 不錯用
2007-02-28 09:54:53 · answer #1 · answered by Anonymous · 0⤊ 0⤋
這程式有點錯誤
1會被當質數看
但1既不是質數也不是合數
所以應該要改一下
for(i=1;i<=n;i++){
應該要改成
for(i=2;i<=n;i++){
然後做個修正
printf("%d",i);
改成
printf("%d\n",i);
不然所有印出的數字都會黏在一起
所以變成
2007-03-05 19:48:24 補充:
#include
#include
void Prime_Number(int);
int main(){
int num;
printf("請輸入一個整數:");
scanf("%d",&num);
Prime_Number(num);
printf("\n");
system("pause");
}
2007-03-05 19:48:57 補充:
請和上面的連在一起
void Prime_Number(int n){
int i, j;
bool flag;
printf("1~%d以內的質數有:\n",n);
for(i=2;i<=n;i++){
flag = true;
for(j=2;j<=i-1;j++){
if(i%j == 0){
flag = false;
break;
}
}
if(flag == true){
printf("%d\n",i);
}
}
}
2007-03-05 14:47:59 · answer #2 · answered by AAM(釣到一隻猴子) 5 · 0⤊ 0⤋
這是用 for 迴圈循序計算以找出質數
第一個 for 迴圈是數值範圍
假如輸入 10 就是計算 1~10 以內的質數
第二個 for 迴圈循序計算並用 if 判斷是否為質數
N 除以 2 開始,除以 3、4、……直到 N-1
因為判斷質數要排除 N 除以 1 和 N 除以 N 的計算
for 迴圈內的 if 判斷整除時,N 不為質數。
最後的 if 判斷是檢查 flag (稱為「旗標」) 是否為真,當 flag 為真,表示 N 為質數,那麼就可以顯示這個 N 值。
return的需要與否,在於程式設計者定義的函式回傳型態。
當函式定義為 void (無效值) 時,不需要 return。
當函式定義為 int、char、double、……等,必需用到 return,而且必須注意 return 值的型態必須與函式定義的型態相同。
例如:
int parseInt(double NUM){
return (int)NUM ;
}
2007-02-28 09:24:06 · answer #3 · answered by Big_John-tw 7 · 0⤊ 0⤋