[問題] 初學者 找最大質數問題

看板C_and_CPP作者 (大帥)時間12年前 (2013/03/31 18:07), 編輯推噓5(5010)
留言15則, 5人參與, 最新討論串1/1
問題如題: 最近再練習c++程式 碰到一個題目輸入一個正整數,印出小於他的最大質數 以下是我的程式碼: #include <stdio.h> #include <iostream> using namespace std; int main() { int a; int b; int c; int d; printf("請輸入一個正整數?\n"); scanf("%d",&a); for(b=a-1;b>1;b--) { d=1;//假設此數為質數 for(c=2;c<b;c++) { if(b%c==0) //如有被整除表示此數不是質數 b=0; break; } if(d==1) { printf("質數= %d \n",b); break; } } return 0; } 目前的問題是輸出的結果一直是b=a-1,不知到哪裡出問題了!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.224.209.23

03/31 18:16, , 1F
你的if(d==1)是一定會執行的阿... 所以迴圈才跑一次
03/31 18:16, 1F

03/31 18:16, , 2F
你的d應該是當flag用,所以如有被整除底下那行應該是d=0吧?
03/31 18:16, 2F

03/31 18:19, , 3F
然後,if(b%c==0)底下兩行應該都是if成立才要跑的
03/31 18:19, 3F

03/31 18:19, , 4F
所以要記得用{}括起來,if(b%c==0){ b=0; break; }
03/31 18:19, 4F

03/31 18:20, , 5F
d=0; 忘記改XD
03/31 18:20, 5F

03/31 18:20, , 6F
你在迴圈裡面寫b=a-1這樣你丟17進去程式會說不是質數...
03/31 18:20, 6F

03/31 18:21, , 7F
因為是要小於輸入值,所以不用考慮17啊
03/31 18:21, 7F

03/31 18:22, , 8F
另外,iostream跟using namespace std沒用到不是嘛 @@
03/31 18:22, 8F

03/31 18:23, , 9F
內容都是C的寫法,為什麼要用C++的開頭 0.0?
03/31 18:23, 9F

03/31 18:27, , 10F
感謝p大詳細解說,把程式改了後發現OK了,主要是少了if的
03/31 18:27, 10F

03/31 18:29, , 11F
{},而iostream跟using namespace std會出現是因為我拿原
03/31 18:29, 11F

03/31 18:30, , 12F
本的程式去改內容,而C++開頭是因為我看的書本是寫C++
03/31 18:30, 12F

03/31 18:31, , 13F
話說C的寫法跟C++的寫法會差很多嗎? 初學者不太清楚
03/31 18:31, 13F

03/31 23:16, , 14F
精彩的abcd
03/31 23:16, 14F

04/01 11:16, , 15F
理論上會差很多,實際上...
04/01 11:16, 15F
文章代碼(AID): #1HM0hgi- (C_and_CPP)