Napisz program, który wyświetla wszystkie liczby pierwsze w zadanym przedziale <x1, x2>, wprowadzonym z klawiatury. Funkcja powinna zwrócić 1, jeżeli a jest liczbą pierwszą, 0 w przeciwnym wypadku. Jeżeli nie wystąpi żaden taki element program ma wypisać komunikat "Nothing to show". W przypadku wprowadzenia przez użytkownika błędnych danych program powinien wyświetlić komunikat "Incorrect input" i zakończyć działanie z kodem błędu 1.
Wiem że wypisuje mi 1, a nie liczby pierwsze ponieważ w mojej funkcji jest return 1, jednak tego wymaga polecenie. Funkcja wypisywałaby liczby pierwsze gdy za return 1 podstawie:
printf("%d", a)
a za return 0 trzeba by podstawić break, z tym że tak nie moge zrobić.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int x1 = 0;
int x2 = 0;
int a = 0;
int k = 0;
int is_prime(int a, int x1, int x2, int k)
{
for (a = x1; a <= x2; a++)
{
for (k = 2; k <= a; k++)
{
if (a%k == 0)
{
if (k == a)
{
return 1;
}
else
{
return 0;
}
}
}
}
}
int main()
{
printf("Podaj x1: ");
if (scanf("%d", &x1) != 1)
{
printf("Incorrect Input");
return 1;
}
printf("Podaj x2: ");
if (scanf("%d", &x2) != 1)
{
printf("Incorrect Input");
return 1;
}
if (is_prime(a, x1, x2, k) == 1)
{
printf("%d", is_prime(a, x1, x2, k));
}
if (is_prime(a, x1, x2, k) != 1 && is_prime(a, x1, x2, k) != 0)
{
printf("Nothing to show");
}
return 0;
}