[問題] 找大於本身最小質數

看板C_and_CPP (C/C++)作者 (空谷殘聲)時間16年前 (2009/12/08 00:47), 編輯推噓5(5017)
留言22則, 2人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> int main() { int data[40];///暫時先略 int i,j,k,n,m=0; int data1[40];////暫時先略 printf("\n<<想要輸入幾筆資料>>\n"); scanf("%d",&i);//先假定輸入多少就找大於自己最接近的質數 以輸入30為例 for(j=i;j<999;j++) //不斷+1 //第一次 j=30 //第二次 j=j+1=31 { for(k=i/2;2<k;k--) 先除2 //第一次 k=30/2=15 //第二次 k=31/2=15 { n=j%k; //求出j%k的餘數 第一次 // 30/(15、14....3、2)結果n都會為0 第二次 // 31/(15、14......3、2)結果n不為0 if(n!=0) //餘數如果不等於0 代表找到餘數了 故第一次這裡省略 跳回外部迴圈 {m=j; //找到餘數時紀錄j跑到多少並放到m 第二次跳到這裡紀錄j結束內部迴圈 break; //跳出內層迴圈 } } if(m>0) //因一開始m=0,如果上面if(n!=0)成立 m就會大於0 //紀錄j的m一定會大於0 {break; //然後跳出外層迴圈 //故跳出迴圈 } } printf("\n<<質數>>\n"); printf("%d",&m); system("pause"); return 0; } 我要找大於本身的最小質數 我寫了可是跑不出來 會卡在i%k=n那裡 小弟是新手 不知道是哪裡出現問題了 是想法想錯了嗎 囧 請求神人點一下 感謝 -- 愛過才知不能愛的痛 這是最絕望的愛...... -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 120.118.208.77

12/08 00:50, , 1F
for(k/2;2<k;k--) k 初始化的地方錯了
12/08 00:50, 1F

12/08 00:51, , 2F
還有妳在測試的是j 應該用j%k吧
12/08 00:51, 2F

12/08 00:52, , 3F
m好像也沒初始化就拿來用的感覺@@
12/08 00:52, 3F

12/08 00:54, , 4F
因為我要讓k=i的一半 ex:i輸入30 k/2=15
12/08 00:54, 4F

12/08 00:57, , 5F
那是k=i/2 不是k/2 ...
12/08 00:57, 5F

12/08 00:58, , 6F
阿阿 沒看到少打
12/08 00:58, 6F

12/08 00:59, , 7F
而且妳CODE內容好像本身都不對
12/08 00:59, 7F

12/08 00:59, , 8F
這樣compile過應該會直接輸出一模一樣的值 我猜的
12/08 00:59, 8F

12/08 01:00, , 9F
i%k=n這裡還是卡住 囧
12/08 01:00, 9F

12/08 01:03, , 10F
仔細看一下你找直樹的方法應該一開始就錯了 你仔細想
12/08 01:03, 10F

12/08 01:03, , 11F
看看 重寫一次好了@@
12/08 01:03, 11F

12/08 01:07, , 12F
囧了~~
12/08 01:07, 12F

12/08 01:17, , 13F
然後if(n!=0)那串我也看不太懂要作啥@@?
12/08 01:17, 13F
※ 編輯: DivineAngel 來自: 120.118.208.77 (12/08 01:26) ※ 編輯: DivineAngel 來自: 120.118.208.77 (12/08 01:29)

12/08 01:31, , 14F
其實我還是看不懂 不過.. 妳第二個for的k還是沒改
12/08 01:31, 14F

12/08 01:31, , 15F
j%k=n --> 血反了 是n=j%k
12/08 01:31, 15F

12/08 01:33, , 16F
我把i改k了
12/08 01:33, 16F

12/08 01:34, , 17F
執行 不管輸入多少都會變成2293436 囧
12/08 01:34, 17F
※ 編輯: DivineAngel 來自: 120.118.208.77 (12/08 01:40) ※ 編輯: DivineAngel 來自: 120.118.208.77 (12/08 01:57)

12/08 01:58, , 18F
j%k=n; //求出j%k的餘數
12/08 01:58, 18F

12/08 01:58, , 19F
<--還是寫反了 沒改過來
12/08 01:58, 19F

12/08 01:58, , 20F
第一次 // 30/(15、14....3、2)結果n都會為0
12/08 01:58, 20F

12/08 01:59, , 21F
30%14怎麼會是0 ...@@
12/08 01:59, 21F
※ 編輯: DivineAngel 來自: 120.118.208.77 (12/08 01:59) ※ 編輯: DivineAngel 來自: 120.118.208.77 (12/08 01:59)

12/08 02:00, , 22F
阿 對吼....
12/08 02:00, 22F
文章代碼(AID): #1B7J661r (C_and_CPP)
文章代碼(AID): #1B7J661r (C_and_CPP)