通过这道题回顾了一下素数表是怎么打的,不过从这题真的可以看出循环变量如何改变真的对运算速度改变蛮大的,可以接受数字之后再打素数表,不然时间太浪费了。
问题链接:https://leetcode-cn.com/explore/interview/card/top-interview-questions-easy/25/math/61/
代码:
public int countPrimes(int n) {
if(n<3){
return 0;
}
int[] primetable = new int[n];
int count=1;
int x = 3;
while(x<n) {
if (primetable[x] ==0) {
count++;
for (int i = 3; i * x < primetable.length; i+=2) {
primetable[i * x] = 1;
}
}
x+=2;
}
return count;
}