讲解2种查找素数的方法
-
题目大概的意思是: 查找2~N范围内所有的素数。
题意简单,粗暴。
首先需要考虑,一个数字需要怎么判断它是否是素数?
普及一下素数的概念:除了 1 和 它本身外没有能被整除的数,我们称为素数。
以数字 7为例: int su = 7; 给 su 贴一个标签 假设是素数,boolean flag = true;
然后我们根据素数的概念可以写出一下循环:
for(int i = 2; i < su; i++){
if(su%i==0) {//有可以被整除的数字,说明su不是素除这时候我们就需要做两件事情
//1. 需要把su的标记改成false说明它不是素数
flag = false;
//2. 然后跳出循环,因为有一个可以被整除就说明它不是素数了,继续判断下去没有意义。
break;
}
}
当学会判断某个数字是否为素数后,查找2~N范围内的素数就容易很多,因为我们直到for就是重复干相同一件事情的。所以外层嵌套一个for就可以了。
for(int su = 2; su < N; su++){
for(int i = 2; i < su; i++){
if(su%i==0) {//有可以被整除的数字,说明su不是素除这时候我们就需要做两件事情
//1. 需要把su的标记改成false说明它不是素数
flag = false;
//2. 然后跳出循环,因为有一个可以被整除就说明它不是素数了,继续判断下去没有意义。
break;
}
}
if(flag){
//如果flag = true 则说明su为素数,直接输出就好了。
System.out.println(su);
}
}