Zadání:
Sestavte program, který určí největšího společného dělitele dvou přirozených čísel.
Řešení:
Řešení je postaveno na principu odečtení menšího čísla od většího a nahrazení většího čísla tímto rozdílem.
Tato akce
se opakuje do té doby, dokud se obě čísla nerovnají. Pokud se rovnají, jejich hodnaota je zároveň největším
společným dělitelem.
Příklad: a=42, b=70
1. b je vetší než a, hodnotu b nahradíme rozdílem b-a: a=42, b=28
2. a je větší než b, hodnotu a nahradíme rozdílem a-b: a=14, b=28
3. b je větší než a, hodnotu b nahradíme rozdílem b-a: a=14, b=14
obě čísla se rovnají, největší společný dělitel je 14
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
var a,b: integer;
begin
writeln('Zadejte prvni cislo: ');
readln(a);
writeln('Zadejte druhe cislo: ');
readln(b);
if (a<=0) or (b<=0) then writeln('Nelze vypocitat.')
else
begin
while a<>b do
if a>b then a:=a-b
else b:=b-a;
writeln('Nejvetsi spolecny delitel: ',a);
end;
readln;
end.
program ke stažení
Pro studenty:
Na rozdíl od použití příkazu REPEAT v programu 04.24 použití příkazu WHILE řeší problém s nekonečnou smyčkou
při zadání dvou shodných hodnot.