求小於一個整數n的所有素數
阿新 • • 發佈:2018-11-14
**
主要知識點:
一個只能被自己和1整除的正整數就是素數,也叫質數,這裡有個規律,就是一個數如果不能被大於2且小於這個整數平方根的數整除,那麼這個數就是素數。
實現程式碼:
import java.util.ArrayList;
/*
* 求小於一個自然數n的所有素數
*/
import java.util.Collections;
import java.util.Scanner;
public class Test{
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
while(true) {//判斷輸入,直到輸入正確
int n = scan.nextInt();//輸入一個整數
if(n>=2) {
ArrayList<Integer> al = new ArrayList<Integer>();
for(int i = 2;i<=n;i++) {
if(isPrimeNumber(i))
al.add(i);
}
System.out.println(al);
//return;//無註釋則是成功一次後退出
}else {
System.out.println("輸入資料不正確,請重新輸入!");
}
}
}
/**
* 判斷一個數是否是素數
* @param n
* @return
*/
public static boolean isPrimeNumber(int n) {
boolean flag = true;
for(int i = 2;i<=Math.sqrt(n); i++) {
if(n%i==0 ) {
flag = false;
break;
}
}
return flag;
}
}
測試結果:
1
輸入資料不正確,請重新輸入!
2
[2]
3
[2, 3]
4
[2, 3]
5
[2, 3, 5]
6
[2, 3, 5]
20
[2, 3, 5, 7, 11, 13, 17, 19]
50
[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47]