注册 登录
编程论坛 C++教室

筛法求素数

於晓琪123 发布于 2015-01-04 12:36, 516 次点击
#include <iostream>
using namespace std;
const long N = 100000;
long prime[N] = {0},num_prime = 0;
int isnotPrime[N]={1,1};
int main()
{
 for (long i=2; i<N; i++)
 {
 if(!isnotPrime[i])
 prime[num_prime++] = i;
 for (long j=0; j<num_prime && i*prime[j]<N; j++)
 {
 isnotPrime[i*prime[j]] = 1;
 if (!(i%prime[j]))
 break;
 }
 }
 return 0;
}

在网上看到这个代码 可是有一个地方读不懂 就是 if (!(i%prime[j]))    什么意思?   
还有就是prime(j)当j=0的时候 那么prime(o)不是等于0么? 0怎么可以作为除数?
1 回复
#2
tm1mc22015-01-11 09:04
if (!(i%prime[j])) 是能整除
可能他写错了,我猜想j应该是从1开始的吧?
1