![](/img/trans.png)
[英]Visual studio does not create output file without any error message
[英]Getting no output on console for big iteration without any error message
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;
}
為什么我設置循環條件為go,循環200萬次后,console上沒有出現和output。 而且我沒有收到任何錯誤消息。 當它被設置為小於 ~100'000 次迭代時它會起作用。 這是 memory 問題還是其他問題?
我試圖通過迭代計算所有低於 200 萬的素數的總和。
這是計算一系列素數的一種非常低效的方法,所以最有可能的答案是它只需要非常非常長的時間。
如果您知道您需要最多 2,000,000 個素數,那么埃拉托色尼篩法就是您的朋友。
就像是:
int n = 2000000;
std::vector<bool> is_prime(n+1, true);
is_prime[0] = is_prime[1] = false;
for (int i = 2; i <= n; i++) {
if (is_prime[i] && (long long)i * i <= n) {
for (int j = i * i; j <= n; j += i)
is_prime[j] = false;
}
}
long long int sum_primes = 0;
for (int i = 0; i < n; i++) {
if (is_prime[i]) sum_primes += i;
}
這在 O(n) 復雜度中運行,而不是 O(n^2)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.