Zadání:
Sestavte program, který určí, zda je zadané přirozené číslo prvočíslem.
Řešení:
Zadání vyřešíme použitím cyklu FOR. Zadané číslo postupně vydělíme všemi hodnotami od 2 do číslo-1. Pokud alespoň
při jednom dělení nastane nulový zbytek, nejedná se o prvočíslo a proto si vložíme do pomocné proměnné prvocislo
hodnotu false, která přepíše původní hodnotu true, kterou inicializujeme proměnnou prvocislo
na začátku programu.
Po všech děleních otestujeme, zda v proměnné prvocislo zůstala hodnota true
(zadané číslo je prvočíslem), nebo
byla přepsána hodnotou false (zadané číslo není prvočíslem).
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var c,i:longint;
prvocislo:boolean;
begin
write('Zadejte cislo: ');
readln(c);
prvocislo:=true;
for i:=2 to c-1 do
if c mod i=0 then prvocislo:=false;
if prvocislo then writeln('Prvocislo')
else writeln('Neni prvocislo');
readln;
end.
program ke stažení
Pro učitele:
Příkaz for i:=2 to c-1 do lze pozměnit na for i:=2 to round(sqrt(c)) do, algoritmus proběhne výrazně rychleji.
Zadané číslo nemusíme testovat všemi čísly z intervali 2..číslo-1, lze nahradit horní mez odmocninou ze zadaného čísla. Jelikož jsou v cyklu FOR požadovány ordinální hodnoty, musíme ještě odmocninu ze zadaného čísla zaokrouhlit na celé číslo.