需要注意的是1既不是质数也不是合数,我用true表示不是质数的数
思想很简单,就是一个质数p的任意整数倍肯定都是合数,然后把这些合数筛掉留下来的就是质数,时间复杂度也不是很高
prime[1] = true;
int sqrtn = sqrt(n+0.5);//防止四舍五入造成的问题
for(int i=2; i<=sqrtn; i++) {
if(!prime[i]){
for(int j = i*i; j<=n; j+=i) {
prime[j] = true;
}
}
}

2370

被折叠的 条评论
为什么被折叠?



