#include<stdlib.h> #include<stdio.h> #include<math.h> int main( void ) /* Ten program sprawdzi, czy podana liczba jest pierwsza. Sposób sprawdzania jest następujący. Najpierw sprawdzamy, czy liczba jest parzysta. Jeżeli jest, to nie jest pierwsza, i następuje szybki koniec. Następnie badamy podzielność przez kolejne nieparzyste. Robimy to w pętli while(), gdzie warunkiem końcowym jest d>sqrt(n). Jeżeli znajdziemy podzielnik, to pętlę (i program) kończymy. */ { long n; /* To będzie nasza zadana przez użytkownika liczba do sprawdzenia. */ long d; /* To będzie pomocnicza zmienna, zawierająca potencjalny dzielnik n. */ char test='t'; /* Ta zmienna będzie zawierała odpowiedź użytkownika, czy chce kontynuować. */ int flag=0; /* To jest flaga, jeżeli znajdziemy dzielnik, to ustawiamy flag=1. Przyda się. */ printf("Ten program sprawdza, czy podana liczba jest pierwsza\n\n\n"); while(test=='t') { printf("Proszę podać liczbę naturalną\n\n\n"); scanf("%ld",&n); printf("Podana liczba: %ld\n\n\n",n); flag=0; d=3; if (n%2==0&&n!=2) printf("Liczba %ld jest liczbą złożoną: jej dzielnikiem jest 2\n\n\n",n); else { while(d<=sqrt(n)) { if(n%d==0) { printf("Liczba %ld jest liczbą złożoną: jej dzielnikiem jest %ld\n\n\n",n,d); flag=1; break; } else d+=2; } if (flag==0) printf("Liczba %ld jest liczbą pierwszą\n\n\n",n); } printf("Czy chcesz kontynuować? [t/n]\n\n\n"); scanf("%c",&test); while((test!='t')&&(test!='n')) scanf("%c",&test); } printf("Do widzenia!\n\n\n"); return EXIT_SUCCESS; }