#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 sprawdzxamy, czy liczba jest parzysta. Jeżeli jest, to nie jest pierwsza, i następuje
szybki koniec. Następnie badamy podzielność przez kolejne nieparzyste. Kończymy na liczbie sqrt(n).
Jeżeli do tej pory nie znajdziemy podzielnika, to już nie znajdziemy, prawda?
*/

{
	long n;   /*  To będzie nasza zadana przez użytkownika liczba do sprawdzenia.   */
	long d=3;   /*  To będzie pomocnicza zmienna, zawierająca potencjalny dzielnik n.   */
	printf("Ten program sprawdza, czy podana liczba jest pierwsza\n\n\n");
	printf("Proszę podać liczbę naturalną\n\n\n");
	scanf("%ld",&n);
	printf("Podana liczba: %ld\n\n\n",n);
	if (n%2==0)
	{
		printf("Liczba %ld jest liczbą złożoną: jej dzielnikiem jest %ld\n\n\n",n,2);
		return EXIT_SUCCESS;
	}
test:	if (n%d==0)
	{
		printf("Liczba %ld jest liczbą złożoną: jej dzielnikiem jest %ld\n\n\n",n,d);
		return EXIT_SUCCESS;
	}
	d+=2;
	if (d>sqrt(n))
	{
		printf("Liczba %ld jest liczbą pierwszą\n\n\n",n);
		return EXIT_SUCCESS;
	}
	goto test;
}