之前接家教,有教過國中數學。質數第一次被提到,是在國一上,第2單元-因數與倍數,那時候提到的。
質數(Prime number)的定義:大於1的正整數當中,除了1和自己本身之外,沒有其他的因數,稱之為質數。
最小的質數是:2
正整數非質數即為合數。
最小的合數是:4
小於30的質數:2、3、5、7、11、13、17、19、23、29
…..
因為是家教,以上這些內容我講了不下百遍,但是學生有時候還是會錯,唉~~。
今天就用java練習一下,列出2~100的質數有哪些?總共有幾個?
JAVA程式碼
public class Ch03 {
public static void main(String[] args) {
int sum=0;
for (int i = 2; i < 100;i++) {
if (IsPrimeNum(i)) {
System.out.print(i+" ");
sum++;
}
}
System.out.print("總共有"+sum+"個質數");
}
private static boolean IsPrimeNum(int i) {
for (int j = 2; j < i;j++) {
if (i%j==0) {
return false;
}
}
return true;
}
}
▼ 程式執行結果
【編寫邏輯】
要確認這個數是不是質數,要判斷的就是該數有沒有因數除了1和自己以外的因數,假如沒有的話,那麼就判定為true,該數為質數;反之為false,該數不是質數。
因此,寫一個迴圈,將該數用2開始除,除到(該數-1),即可。
【步驟】
1、定義一個布林值,我取名為IsPrimeNum,並且用i當作參數:boolean IsPrimeNum(int i)
2、寫一個迴圈,將正整數 i(2~100)除以正整數 j ,其中j大於1且小於i(質數定義),假如可以整除,那麼就不是質數,繼續除j+1,若再不能整除,繼續除j+2,若一直除到i-1都還沒整除,代表沒有任何j可以整除i,i即為質數,回傳true給IsPrimeNum;反之,回傳false給IsPrimeNum。
3、最後將我們的質數給顯示出來:假如IsPrimeNum收到的參數i為true,那麼我們就列印出i。
4、另外,再寫一個整數sum,只要IsPrimeNum收到的參數i為true,就+1,收到幾次true,就加幾次1,最後的結果即為質數的總數。