Java算法算法提高之LeetCode刷题

Java求质数(素数)

2019-10-03  本文已影响0人  虹猫日志

需求:給定一个数字n,返回1到n之间的质数(素数)个数,不包括n本身。
* 质数又被称为素数,是指一个大于1的自然数,除了1和它自身外,不能被其它自然数整除。
* 例如:n = 5 ,返回2,因为1-5之间的质数为:2和3。

public static void main(String[] args) {
    System.out.println( getSum( 5 ) );
}

private static Integer getSum(int n) {
    //存放质数的集合
    List<Integer> arr = new ArrayList<>();
    for (int i = 2; i < n; i++) {
        if (isPrimeNumber( i )) {
            arr.add( i );
        }
    }
    //打印质数
    System.out.println( arr );
    //返回集合长度(质数个数)
    return arr.size();
}
/**
 * 判断是否为质素
 *
 * @param i 待判断的最大数值
 * @return 是返回真,否假
 */
private static boolean isPrimeNumber(int i) {
    for (int j = 2; j < i; j++) {
        if (i % j == 0) {
            return false;
        }
    }
    return true;
}
运行结果:
image.png
上一篇下一篇

猜你喜欢

热点阅读