版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37036984/article/details/81224224
**
主要知识点:
一个只能被自己和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]