[問題] 判斷小於指定值質數

看板C_and_CPP (C/C++)作者 (ckp4131025)時間16年前 (2009/11/04 20:54), 編輯推噓5(5012)
留言17則, 5人參與, 最新討論串1/1
目前遇到的問題是 1.會重複print 1 12 123 這樣 2.判斷質數的部分是失敗的 希望能告訴我觀念就好 我希望能自己修>"< Q: 輸入一整數 然後判斷 小於此一整數的所有數,是否為質數 最後計算總共有幾個質數 #include <stdio.h> #include <stdlib.h> #include <math.h> int main() { int n,a,i,j,sum; printf("please input an integer:"); scanf(" %d",&a); while(a<2) { printf("please input an integer:"); scanf(" %d",&a); } for(i=2;i<=a;i++) { for(j=2;j<=sqrt(i);j++) { if(i%j==0) { printf("%d is a prime.\n",i); sum=sum+1; } else if(!(i%j==0)) { printf("%d is not a prime.\n",i); } } } printf("there are %d primes.\n",sum); system("pause"); return 0; } 有人可以告訴我修改的方向嗎 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.114.212.7 ※ 編輯: ckp4131025 來自: 140.114.212.7 (11/04 20:55)

11/04 20:56, , 1F
1. sum沒有給初值.
11/04 20:56, 1F

11/04 20:56, , 2F
先寫一個判斷質數的函式,再對小於指定值的數字做判斷
11/04 20:56, 2F

11/04 20:57, , 3F
2. 判斷質數的邏輯感覺很亂, 應該是判斷完i%完所有j(扣
11/04 20:57, 3F

11/04 20:58, , 4F
掉%i這個case), 都不能除盡, 才能確定它是質數, 所以
11/04 20:58, 4F

11/04 20:59, , 5F
單看if/else if那邊寫的printf邏輯就是反的, 也不應
11/04 20:59, 5F

11/04 20:59, , 6F
該才跑一輪就印.
11/04 20:59, 6F

11/04 21:00, , 7F
3. 題外話; if(i%j==0), else的情形它就一定不成立, 所
11/04 21:00, 7F

11/04 21:00, , 8F
else if()裡的判斷有點纍贅沒意義:)
11/04 21:00, 8F

11/04 21:08, , 9F
請問一下,如果我要避掉問題一的情況,printf應該加在??
11/04 21:08, 9F

11/04 21:10, , 10F
簡單的說, 你要等j那層迴圈全判斷完才可以印結果.
11/04 21:10, 10F

11/04 21:10, , 11F
建議照2F說的, 先寫一個func判斷傳入的數是否為質數,
11/04 21:10, 11F

11/04 21:11, , 12F
那麼你就可以跑迴圈call這個func來判斷某個range內
11/04 21:11, 12F

11/04 21:11, , 13F
有哪些是質數 / 有幾個質數:)y
11/04 21:11, 13F

11/04 23:43, , 14F
我猜你跟我同學修同一門課 他昨天才問我XDDD
11/04 23:43, 14F

11/04 23:56, , 15F
XD~剛剛寫出來了^^
11/04 23:56, 15F

11/05 00:10, , 16F
所以我可以repost跑成功的程式碼嗎??
11/05 00:10, 16F

11/05 14:20, , 17F
一開始a給小於2的初值,printf跟scanf那兩行就不用重複了
11/05 14:20, 17F
文章代碼(AID): #1AyNbufI (C_and_CPP)
文章代碼(AID): #1AyNbufI (C_and_CPP)