Natrafilłem na ciekawe zadanie programistyczne, ale niestety program liczy już ponad 20 minut i nie może się doliczyć. Byłbym wdzięczny gdybyście mi pomogli przy optymalizacji kodu (i w ogóle sprawdzili czy jest dobrze :D).
Treść zadania:
Liczba dzielników 120 wynosi 16. W rzeczywistości 120 jest najmniejszą liczbą mającą 16 dzielników. Znajdź najmniejszą liczbę z 2^500500 dzielnikami. Podaj odpowiedź jako modulo 500500507.
Mój kod:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
int dzielniki = 0, liczba = 500000, dzielnik = 1;
while (dzielniki <= pow(2, 500500)) {
dzielniki = 0;
for (; dzielnik <= liczba; dzielnik++) {
if (liczba % dzielnik == 0)
dzielniki++;
}
if (dzielniki == pow(2, 500500))
cout <<"Wynik to: " << liczba % 500500507 << endl;
liczba++;
}
system("pause");
return 0;
}