Na początku zaznaczę że jest to problem czysto matematyczny. Mam pętlę w której wyliczam tyle liczb pierwszych ile zachce użytkownik. Liczę sobie czas obliczania wszystkich liczb. Jak mogę obliczyć przewidywany czas obliczania tych liczb? Wiem że mogę to zrobić tak: <ilość liczb do obliczenia> * <średni czas liczenia jednej liczby> = <przewidywany czas="czas" obliczania="obliczania">. Nie wiem jednak jak obliczyć średni czas obliczania liczby przed wykonaniem całego liczenia i poznania czasu wykonywania wszystkich obliczeń. Średnią mogę obliczyć tak: <czas wykonywania wszystkich obliczeń> / <ilość wykonanych obliczeń> = <średni czas obliczania jednej liczby>. Próbowałem zrobić tak, że przed właściwym liczeniem, przeprowadzałem takie skrócone liczenie. W sensie że np. do obliczenia mam 10000 liczb, ale zanim to zrobię, dzielę ilość liczb do obliczenia przez np. 100, co daje mi 100. Więc zrobiłem taką pętlę (MAX to ilość obliczeń do wykonania):
// rozpoczęcie mierzenia czasu
for (unsigned long long i = 0; i < MAX; i += MAX / 100)
{
// to samo co we właściwej pętli w której wyznaczane są liczby pierwsze
}
// zakończenie mierzenia czasu
Następnie robiłem tak (czas jest w nanosekundach, NANOSECONDS_TO_MILLISECONDS to 1.0 / 1000000.0): <średni czas obliczania jednej liczby> = <czas obliczania="obliczania"> / <ilość iteracji w pętli>, <przewidywany czas="czas" obliczania="obliczania"> = <średni czas obliczania jednej liczby> * <ilość liczb do obliczenia>, <przewidywany czas="czas" obliczania="obliczania" w="w" milisekundach="milisekundach"> = <przewidywany czas="czas" obliczania="obliczania"> * NANOSECONDS_TO_MILLISECONDS. Z jakiegoś powodu program twierdzi że obliczanie zajmie ułamki sekundy, co jest nieprawdą. Jak mogę to zrobić aby obliczyć przewidywany czas?