移位埃氏筛法代码效率优化:6n±1规则应用与模运算取舍
素数生成代码优化问题
我的代码如下:
int main(){ vector<int> primes; vector<int> primesSum; int tally = 1; bool primeFound = false; while (true) { int i = 0; while (!primeFound) { primeFound = true; tally++; for (i = 0; i < (int)primes.size(); i++) { if (tally == primesSum[i]) { primeFound = false; primesSum[i] += primes[i]; } } } primeFound = false; primesSum.push_back(tally*2); primes.push_back(tally); } }
当前代码可以正常生成素数,但我希望通过应用2和3之后的素数均满足6n±1规则来提升效率,不过这似乎会牺牲我初始空向量的设计优势。
我见过素数验证器使用该规则,但筛法程序中较为少见,可能是因为它会打破2的过滤机制。
补充说明:除非模运算在时间效率上优于当前实现,否则我希望避免使用模运算,这是我当前程序的一个设计成果。
内容的提问来源于stack exchange,提问作者Joseph Cook
相关产品推荐
相关产品推荐

