✔ 最佳答案
首先要明白咩係質數;n若是質數,不能給任何整數除盡,即2至n-1都不能除盡。
那就易辦了,只要由2開始測試,沒有一個能除盡就回覆是質數。
pseudo code 就會咁上下
先試 N > 1
是 : { 先預設 答案 R 為 TRUE ,即預定是質數,
用 FOR LOOP ,由 2 至 n-1 作餘數檢測,若餘數為0即可除盡除,設定R=FALSE
回傳 R 為答案是否質數
}
非:
{ 回傳 非質數 } // 0,1及所有負數皆定為非質數
後記:其實 FOR LOOP 無須由 2 至 N-1,只要 2 至 n/2己足夠,因為任何一個數最大可盡除不可能大過自己一半。這樣當數字大時會加快混算。
另外一件事是,無須 2,3,4,5,6,7這樣試,因為既然2除不盡,也不須試4,6,8,10..只要試3,5,7,9,11,13... (即單數),又可以加快一點。
這個題目在我第一天學PROGRAMMING時書本所說。但現時想。其實既然3也除不盡,也不須做到N/2,其實N/3也足夠了,也許n/4也足夠,但為什麼不是N/5或n/6? 也許應該是 SQRT(N),讓你想一想。