查看完整版本: 買書自學 的題目看不懂 我也不知道是否做對了
頁: [1]

cht1902316 發表於 2017-2-17 09:08 PM

買書自學 的題目看不懂 我也不知道是否做對了

這題 的題目是說: 請呼叫一個函式int prime4j3(int x);,可以判斷一個數是否為4j+3的質數,在此函式內請呼叫使用上一題設計的isPrime(int x);函式。
-----------------------------------------------------------------
我做出來的 只能 用 眼睛去找 我輸入的數字 是否在 跑出來 的質數裡 , 要怎麼 用 程式 去判斷呀~
----------------------------------------------------------------
不好意思 我老是問問題 哈哈哈 {:35:}...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

tryit244178 發表於 2017-2-19 06:58 AM

本帖最後由 tryit244178 於 2017-2-25 02:57 PM 編輯

參考看看吧



chyu1019 發表於 2017-3-23 10:51 PM

基本上質數有幾個常見的演算法, 可以用比較有效率的做法,
像以30(=2*3*5)為底, 過濾偶數, 以及其它數字的倍數, 可以只做下列數的測試:
30n + 1  V
30n + 3  X(3的倍數)
30n + 5  X(5的倍數)
30n + 7  V
30n + 9  X(3的倍數)
30n + 11 V
30n + 13 V
30n + 15 X(3,5的倍數)
30n + 17 V
30n + 19 V
30n + 21 X(3的倍數)
30n + 23 V
30n + 25 X(5的倍數)
30n + 27 X(3的倍數)
30n + 29 V
, 故只要測試 30n +1, +7, +11, +13, +17, +19, +23, +29即可
再來就是跟已知的質數列相除, (每當發現一個質數, 就將此數加入質數列)
看看餘數是否為0即可
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>

o_g349 發表於 2017-9-13 12:57 PM

解法很簡單,你在 prime4j3() 的 for 迴圈裡加上一個 if 判斷:
if (a1 % 4 == 3 && isPrime(a1))
要記得 isPrime(a1) 要修正成可以回傳是否成功的函數
頁: [1]