java-求质数-实现
程序员文章站
2022-03-13 12:06:12
...
质数: 就是大于1,且能被1和自己整除的自然数。
/** 方法一
* 质数:大于1的自然数,只能被自己和1整除
*
* @param n
* @return
*/
public static List<Integer> getPrimeNumber(int n) {
List<Integer> priArr = new ArrayList<>();
//1. 【只能从2开始遍历】
for (int i = 2; i < n; i++) {
boolean isPrime = true;
//2. 【j是比1大,比i小的数,只要i能整除j 说明不是质数。】
for (int j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = false;
break;
}
}
if (isPrime) {
priArr.add(i);
}
}
return priArr;
}
/**方法二
* 质数:大于1的自然数,只能被自己和1整除
* @param num
* @return
*/
public static boolean isPrimeNumber(int num) {
if (num == 2) return true; //1. 【2是质数】
if (num < 2 || num % 2 == 0) return false; //2. 【小与2和能被2整除的都不是质数】
for (int i = 3; i <= Math.sqrt(num); i += 2) {
if (num % i == 0) { //3. 【任何一个数只要能被 比自己平方根小的数整除,就不是质数】
return false;
}
}
return true;
}
public static List<Integer> getPriNumber(int num){
List<Integer> list=new ArrayList<>();
for(int i=2;i<=num;i++){
if(isPrimeNumber(i)){
list.add(i);
}
}
return list;
}
// main 函数
public static void main(String[] args) {
System.out.println(getPrimeNumber(100).toString());
System.out.println(getPriNumber(100));
}
上一篇: Python人工智能高级69(pandas,k-近邻算法)
下一篇: 求100以内质数