#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;
}