[問題] 求質數的問題

看板C_and_CPP作者 (XL)時間13年前 (2011/06/04 01:34), 編輯推噓2(206)
留言8則, 4人參與, 最新討論串1/1
大家知道質數一定都是奇數,除了2這個例外 #include <stdio.h> #include <stdlib.h> int main(void) { int n=2; int num; printf("輸入數字\n"); scanf("%d",&num); do { int i=2; int x=-1; do { if(n%i==0){ x=n/i;/*假設我輸入的數字為7,從2~6都沒有一個數字能整除7,所以x將會是-1不會變*/ } i=i+1; }while(i<n); if(x==-1){ printf("%d\n",n); } if(n==2){ printf("%d\n",n); } n=n+1; }while(n<=num); return 0; 那要怎樣讓2判斷維也是質數呢 還是一定只能像這個程式寫的一樣用例外自己加上去? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.37.33.40

06/04 01:49, , 1F
if(num%i==0) 才對吧 你的n和num好像沒分清楚
06/04 01:49, 1F

06/04 02:18, , 2F
印象中檢察比自己根號小的數就可以了
06/04 02:18, 2F

06/04 02:41, , 3F
重構了一下...http://goo.gl/0JkTS 看來是要找小於num
06/04 02:41, 3F

06/04 02:42, , 4F
的所有質數, 變數命名好, 就可以比較好看出哪邊可以抽
06/04 02:42, 4F

06/04 02:43, , 5F
出來寫成函式, 在這裡就是內層的do-while, 就會比較好
06/04 02:43, 5F

06/04 02:46, , 6F
分離邏輯
06/04 02:46, 6F

06/04 03:13, , 7F
分離後用質數表就不用作special case
06/04 03:13, 7F

06/04 12:07, , 8F
06/04 12:07, 8F
文章代碼(AID): #1DwHipSP (C_and_CPP)