int main() {
int naturalNumber = 2;
int divider = 0;
int rest = 1;
long long int sumOfPrimes = 0;
while (naturalNumber <= 2000000) {
divider = naturalNumber;
while (rest != 0) {
divider--;
rest = naturalNumber % divider;
}
rest = 1;
if (divider == 1) {
sumOfPrimes = sumOfPrimes + naturalNumber;
}
naturalNumber++;
}
std::cout << sumOfPrimes;
}
为什么在我把循环条件设置为经过200万次迭代之后,和输出没有出现在控制台上。而且我没有收到任何错误消息。当它被设置为小于~100'000次迭代时,它可以工作。这是内存问题还是其他问题?
我试图通过迭代计算所有小于2百万的质数的总和。
1条答案
按热度按时间hm2xizp91#
这是一种非常低效的计算一系列质数的方法,所以最有可能的答案是,它只是花了非常非常长的时间。
如果您知道需要2,000,000以内的所有素数,那么Sieve of Eratosthenes就是您的好朋友。
例如:
这个过程的复杂度是O(n),而不是O(n^2)。