Test pierwszości napisany w języku ANSI C
Dzisiaj chciałbym przedstawić funkcję sprawdzającą czy dana liczb jest liczbą pierwszą. Algorytm zakodowałem w języku ANSI C:
#include <stdio.h> //Dana liczba int liczba=19; int wynik=0; int is_prime(int liczba) { int i=2; while(wynik==0 && i<liczba) { if ((liczba%i)==0) ++wynik; ++i; } if (wynik==0) return(0); else return(1); } int main() { if (is_prime(liczba)==0) printf("liczba %d jest liczbą pierwszą",liczba); else printf("liczba %d jest liczbą złożoną",liczba); }
- W aplikacji jest jedna zmienna globalna : liczba oraz dwie zmienne pomocnicze : i oraz wynik . W zmiennej liczba znajduje się sprawdzana liczba - czy jest pierwsza czy złożona.
- W pętli while zmienna liczba jest dzielona przez kolejne liczby naturalne : 2,3,4,...,n/2. Jeżeli któraś z liczb naturalnych daje resztę z dzielenia większą od zera to apikacja wychodzi z pętli while i zwraca wartość 1 - liczba złożona. W przeciwnym przypadku aplikacja przechodzi przez całą pętlę while i zwraca wartość 0 - liczba pierwsza.