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
#include "stdafx.h"
#include "math.h"
#include
#include
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
int a,b;
printf("Zadejte prvni cislo: ");
scanf_s("%d",&a,1);
printf("Zadejte druhe cislo: ");
scanf_s("%d",&b,1);
if (a<=0 || b<=0) printf("Nelze vypocitat.");
else
{
while (a!=b)
{
if (a>b) a=a-b; else b=b-a;
}
printf("Nejvetsi spolecny delitel: %d\n",a);
}
system("pause");
return 0;
}
program ke stažení
Pro studenty:
Na rozdíl od použití příkazu DO ... WHILE 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.