从2到任意数的质数集合(个人优化)
@Test
//找出设定以内的质数集(设定终点为end)
//质数: 只能被1和自己整除的数
//算法介绍:如果一个数对当前质数集的所有质数都不能整除,则该数为质数
public void test1(){
//设定终点
int end = 100;
List<Integer> list = new ArrayList<>();//满足条件的质数集合
list.add(2);
for (int i = 3; i < end; i++) {
int size = list.size();
for (int j = 0; j < size; j++) {
Integer val = list.get(j);
if (i % val == 0){
break;
}
if (j == size - 1){
//质数集最后一个质数也不行
list.add(i);//将该质数添加到质数集
}
}
}
System.out.println(list);
}
牛客网的一道题。在寻找解法的过程中找到的,记录。
时间复杂度相较于暴力算法要低很多。
结果:
[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]