✨ Úloha 3.10
Napíšte program, zdrojový kód, v jazyku C použitím štandardu C17, ktorý realizuje nasledovnú činnosť. Definujte funkciu int je_prvocislo(int a) so vstupným parametrom kladným číslom a, ktorá vráti hodnotu 1, ak je parameter a prvočíslo. Ak je a zložené číslo, funkcia vráti hodnotu 0. Môžete predpokladať, že a bude mať vždy hodnotu aspoň 2. V implementácii funkcie je_prvocislo(a) využite funkciu delitelnost() z predošlej úlohy!
Note
Celé číslo a > 2 je prvočíslo, ak pre všetky čísla od 2 po a-1 platí, že nedelia číslo a. Číslo 2 je prvočíslo automaticky.
Príklady vstupov / výstupov programu
- Volanie
je_prvocislo(7)vráti hodnotu True, pretože 7 je prvočíslo, pretože ho nedelí žiadne z čísiel 2,3,4,5,6. - Volanie
je_prvocislo(8)vráti hodnotu False, pretože 8 nie je prvočíslo. Z čísiel 2,3,4,5,6,7 ho delia čísla 2 a 4. - Volanie
je_prvocislo(2)vráti hodnotu True, pretože 2 je prvočíslo.
Rozbaľ pre ukážku riešenia
#include <stdio.h>
// Funkcia delitelnost:
// Vráti 1, ak d delí a, inak 0.
int delitelnost(int a, int d) {
if (a % d == 0)
return 1;
else
return 0;
}
// Funkcia je_prvocislo:
// Vráti 1, ak je číslo a prvočíslo, inak 0.
int je_prvocislo(int a) {
if (a == 2)
return 1; // 2 je prvočíslo
for (int i = 2; i < a; i++) {
if (delitelnost(a, i)) // ak i delí a
return 0; // a nie je prvočíslo
}
return 1; // žiadne číslo nedelí a -> prvočíslo
}
int main(void) {
int a;
printf("Zadajte celé číslo väčšie alebo rovné 2: ");
scanf("%d", &a);
if (je_prvocislo(a))
printf("%d je prvočíslo.\n", a);
else
printf("%d nie je prvočíslo.\n", a);
return 0;
}