看板 NCCU08_Math 關於我們 聯絡資訊
我寫了個判斷質數的程式 如下 int m , n; n = int::Parse(textBox1->Text); for ( m = 2 ; m < n ; m++) { if (n%m == 0) { MessageBox::Show(n.ToString() + "不是質數"); break; } else MessageBox::Show(n.ToString() + "是質數"); } 但是 這樣結果好像變成 m會從2開始一直加1然後除n 之後可整除就跳出不是質數 不可整除就跳出是質數 要怎樣讓他一次判斷m從2~n-1然後都不能整除然後才說他是質數阿? ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 以上是阿喜原文 你這樣的寫的話,就變成說,for迴圈每跑一次 就會跑出一個MessageBox,所以你應該要修改一下 上面那個if(n%m == 0)的判斷可以留下來 因為這就是說遇到m整除n的情況,他就會show一個不是質數。 然後他就會重跑一次迴圈<<<這是重點 所以你的第一個if裡面要加一行 if(n%m == 0){ MessageBox::Show(n.toString+"不是質數"); break; } break的作用是讓迴圈的東西結束(swtich也會用到) 至於不整除的部分,你可以先宣一個變數表示質數狀態,假如宣告s是質數狀態 s = 0 不是質數 s = 1 是質數 然後你原本的 if(n%m == 0) 裡面加一行 s = 0 else裡面加一行 s = 1 這樣等你整個迴圈跑完後,如果你這個n真的是質數 s最後就會是1 for以外(注意!!是for外面喔) 加 if(s == 1){ MessageBox::Show(n.toString+"是質數"); } 這樣當你結束for迴圈時,就可以得到是不是質數的結果 阿喜棒棒!! -- 欸..... 我跟你說 cout << 我是 小 Q 喔!! <<endl; 屌吧? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.193.67.215 ※ 編輯: hsnu114444 來自: 123.193.67.215 (06/18 22:41)
lovesnow1990:謝拉~ 另外想問一下n的平方根要怎樣設定出來? 06/18 22:52
jacky7987:squa(n)? 06/18 22:55
lovesnow1990:所以要再定義一個整數之後 等於squa(n)嗎 06/18 22:58
hsnu114444:不用那麼麻煩 那個還要加函式庫<math.h>才能用 06/18 23:01
isaac7910:阿喜的棒棒!? 06/18 23:02
hsnu114444:判斷式裡面 你可以反過來寫 例如m小於n平方 06/18 23:02
hsnu114444:m < n*n 06/18 23:02
hsnu114444:是sqrt(n) 06/18 23:03
hsnu114444:妳的那個應該式改成m*m<n 06/18 23:04
hsnu114444:sqrt(n)回傳值是double 不能直接當int用 06/18 23:07