求小于一个整数n的所有素数

版权声明:本文为博主原创文章,未经博主允许不得转载。 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]

猜你喜欢

转载自blog.csdn.net/m0_37036984/article/details/81224224