算法题:打印N以内所有质数
程序员文章站
2022-06-26 18:15:46
题目描述:打印出N以内所有质数思路质数的定义是它的因子只有1和它本身,比如2,3,5,7。。。因此我们在判断的时候可以根据遍历到的数是不是有除了1和它本身之外的因子。同时我们知道如果有因子(即如果是合数)那么,因子必定是小于这个数的,我们就排除掉。代码package Algorithm.Interview;import java.util.ArrayList;import java.util.List;public class primeNum { public List<...
题目描述:
打印出N以内所有质数
思路
质数的定义是它的因子只有1和它本身,比如2,3,5,7。。。
因此我们在判断的时候可以根据遍历到的数是不是有除了1和它本身之外的因子。同时我们知道如果有因子(即如果是合数)那么,因子必定是小于这个数的,我们就排除掉。
代码
package Algorithm.Interview;
import java.util.ArrayList;
import java.util.List;
public class primeNum {
public List<Integer> PrintPrime(int n){
List<Integer> Prime = new ArrayList<>();
//2也是质数
Prime.add(2);
//外循环遍历N以内的所有数,1不是质数,2是质数,所以从2开始遍历
for (int i = 2; i <= n; i++) {
//内循环遍历小于要判断的数的因子,即要判断的数是否有除了1和它本身的因子
for (int j = 2; j < i; j++) {
//如果有因子,直接跳出内循环,到外循环遍历下一个数
if (i % j == 0){
break;
}
//如果没有因子,判断j = i-1这个数,能循环到i-1说明之前的j都没有跳出循环,来判断最后一个小于i的数是不是i的因子
else if (j == i -1 && i % j != 0){
Prime.add(i);
}
}
}
return Prime;
}
public static void main(String[] args) {
primeNum primeNum = new primeNum();
System.out.println(primeNum.PrintPrime(100));
}
}
本文地址:https://blog.csdn.net/FiveStarsGeneral/article/details/109266491