[問題] 判斷質數等不到所有數都除過就判定了?

看板C_and_CPP (C/C++)作者 (http://0rz.tw/bd3Jx )時間16年前 (2009/08/29 14:40), 編輯推噓4(5118)
留言24則, 9人參與, 最新討論串1/3 (看更多)
http://nopaste.info/50b7b07400.html 這是我寫的判斷質數 但是寫完之後我才發現一個問題 我想不到要如何一個數N 從1~N除完才判斷它是質數 -- 我小學唸書贏人;國中時唸書贏人;高中時唸書贏人;大學時唸書贏人。 最後畢業於名校研究所。但是畢業後我突然感到害怕,以後沒書唸了。 沒有什麼可以讓我用來肯定自己,並且證明自己比別人優秀了。 但是我想到畢業於名校研究所。於是,出了社會到了職場,頂著名校光環, 我常常嗆人家是什麼學校畢業的,好為只會讀書而在其他方面很無能的自己... 挽回一點顏面。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.127.240.15

08/29 14:45, , 1F
標題............ 內文不懂再問啥 = =
08/29 14:45, 1F

08/29 14:49, , 2F
簽名檔什麼鬼
08/29 14:49, 2F

08/29 14:53, , 3F
你應該先把中文學好 - -
08/29 14:53, 3F

08/29 14:59, , 4F
我連code第一行的註解都看不懂, 不過看code大概猜得出來
08/29 14:59, 4F

08/29 15:00, , 5F
問題是, 他在迴圈跑完之前就輸出(錯誤)結果了, 他想不到
08/29 15:00, 5F

08/29 15:00, , 6F
要如果等所有數都除過, 才依結果判斷這是不是一個質數:)
08/29 15:00, 6F

08/29 15:01, , 7F
08/29 15:01, 7F

08/29 15:02, , 8F
簡單的方法是, 新增一個旗標變數給個初值, 當迴圈裡有一
08/29 15:02, 8F

08/29 15:03, , 9F
次整除, 就改變旗標值(可順便中斷迴圈), 在迴圈結束後只
08/29 15:03, 9F

08/29 15:03, , 10F
要判斷旗標是否為初值, 就知道這個數到底是不是質數了.
08/29 15:03, 10F

08/29 15:04, , 11F
最後, 用質數search有幾十篇result, 我覺得你應該可以先
08/29 15:04, 11F

08/29 15:04, , 12F
找找看之前討論的結果; 當然還有請加強語文表達能力, 除
08/29 15:04, 12F

08/29 15:05, , 13F
非你永遠自幹程式與proj, 不然身為PG一定要和人溝通的:)
08/29 15:05, 13F

08/29 15:06, , 14F
要硬幹也不用到n阿 到sqr(n)就好了
08/29 15:06, 14F

08/29 15:08, , 15F
加速是後話, 個人覺得他能先把程式流程弄清楚比較重要XD
08/29 15:08, 15F

08/29 15:36, , 16F
質數就是只能被1和N除盡...所以就count=2就是質數
08/29 15:36, 16F

08/29 16:27, , 17F
請把標題改成你要問的問題
08/29 16:27, 17F

08/29 16:50, , 18F
我想我大概懂他的意思了
08/29 16:50, 18F

08/29 16:50, , 19F
你可以把兩個 printf 都移到迴圈的外面
08/29 16:50, 19F

08/29 16:51, , 20F
判斷要印哪個時,直接看迴圈有沒有跑完 (也就是說 j 是否
08/29 16:51, 20F

08/29 16:51, , 21F
大於 i) 就好~ 因為如果他不是質數 迴圈還沒有跑完就會br-
08/29 16:51, 21F

08/29 16:51, , 22F
eak; 出來
08/29 16:51, 22F

08/30 21:35, , 23F
用 MillerRabin + 蒙哥馬利
08/30 21:35, 23F

08/30 21:46, , 24F
不如看看板上問質數的文章有幾篇
08/30 21:46, 24F
文章代碼(AID): #1AcCrOG8 (C_and_CPP)
文章代碼(AID): #1AcCrOG8 (C_and_CPP)