Optymalizacja programu do wyświetlania liczb pierwszych.

Jak już wcześniej wspominałem, w tym wpisie chciałbym zająć się optymalizacją kodu we wcześniejszym programie:

  • Pętlę, sprawdzającą czy liczba jest pierwsza:

    for (j=1;j<i+1;j++){ if (i%j==0){ b++;}}

    Można zoptymalizować – ta pętla sprawdza dzielniki danej liczby, począwszy od liczby 1 do tej liczby. Można zredukować ją do pierwiastka z tej liczby, ponieważ jeśli przed nim nie pojawi się żaden dzielnik (poza 1), to za nim na pewno także nie może (poza daną nam liczbą). Wynika to z tego, liczba będąca dzielnikiem danej liczby i będąca większa niż jej pierwiastek po wykonaniu operacji dzielenia ze sprawdzaną liczbą da nam jej inny dzielnik , mniejszy niż pierwiastek ze sprawdzanej liczby.

  • Możemy zupełnie zmienić metodę – Tworzymy tablicę liczb (np. od 1 do 1000000). Najmniejszą liczbą pierwszą  jest 2 , więc wszystkie jej wielokrotności ( poza nią samą) będą złożone. Usuwamy je zatem z tablicy. Idziemy do kolejnej liczby w tablicy. Od razu będziemy o niej wiedzieć, że jest pierwsza. Usuwamy zatem jej wszystkie wielokrotności (poza nią samą). W ten sposób szybko zmniejszamy liczbę liczb w tablicy. Metoda ta znana jest jako Sito Eratostenesa.
Ten wpis został opublikowany w kategorii Informatyka, Matematyka. Dodaj zakładkę do bezpośredniego odnośnika.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *