面试算法题(6)--求素数

求素数

这是一道N年前我求职java时的面试题。
当年的我是java菜鸟,遇到这道题更是一脸茫然啊。
在这趟算法题列车上,还是载上它吧。

素数:即是能被1和自己整除的数。1不是素数。
比喻:求19是不是素数?
那就来个2~18之间的循环,把每个数取出来让19整除,如果余数等于0,那就是素数了,否则不是。

明白上面逻辑,就好做了。
来个例子,求2~100之间的素数。
那么,先得来个2~100的循环,取出每一个数i,然后再来2~(i-1)之间的循环,得到每一个数j,
然后判断i%j==0是否成立,如果成立(出去1和i本身之外,发现了第三个数j,可以被i整除),确定不是素数。

上代码吧:

public class Test {
    public static void main(String[] args) {
        primeNumber(2, 100);
    }

    private static void primeNumber(int start, int end) {
        if (start >= end) {
            return;
        }
        //外层循环,逐个获取目标数字
        for (int i = start; i <= end; i++) {
            //内层循环,获取2~i-1之间的每个数
            boolean isPrimeNumber = true;
            for (int j = 2; j < i; j++) {
                if (i % j == 0) {
                    //确定不是素数,标记
                    isPrimeNumber = false;
                    //无需for循环
                    break;
                }
            }
            if (isPrimeNumber) {
                //是素数,输出目标数i
                System.out.print(i);
                System.out.print(", ");
            }
        }
    }
}
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 

猜你喜欢

转载自blog.csdn.net/fesdgasdgasdg/article/details/81123077
今日推荐