Самый быстрый способ расчета модуля в большом списке чисел - PullRequest
1 голос
/ 28 ноября 2011

Я пытаюсь написать программу на c ++, чтобы найти все числа с определенным диапазоном, скажем (от 1 до 3 миллиардов), которые делятся на числа, скажем, N. возможно.

Очень просто:

for (i = 0; i < 3 BIllion; i++)
{
    if (i % N == 0) print (i);
}

Я уверен, что будут лучшие решения, так как это займет много времени. Был бы очень признателен за толчок в правильном направлении.

1 Ответ

4 голосов
/ 28 ноября 2011

Вместо того, чтобы проверять все числа по очереди, почему бы просто не сгенерировать кратные числа явно?

#include <cstdint>

uint32_t i = 0;
while (i < 3000000000)
{
    printf("%d\n", i);
    i += N;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...