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
Module Module1
Sub Main()
Dim a, b As Integer
Console.Write("Zadejte prvni cislo: ")
a = Console.ReadLine
Console.Write("Zadejte druhe cislo: ")
b = Console.ReadLine
If a <= 0 Or b <= 0 Then
Console.WriteLine("Nelze vypocitat.")
Else
Do While a <> b
If a > b Then
a = a - b
Else
b = b - a
End If
Loop
Console.WriteLine("Nejvetsi spolecny delitel: {0}", a)
End If
Console.ReadLine()
End Sub
End Module
program ke stažení
Pro studenty:
Na rozdíl od použití příkazu DO ... LOOP UNTIL v programu 04.24 použití příkazu DO WHILE ... LOOP řeší
problém s nekonečnou smyčkou při zadání dvou shodných hodnot.