Navigace: Hlavní stránka -> Jazyk C -> 04 Cykly -> 04.25 Největší společný dělitel II

MENU

04.25 Největší společný dělitel II

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.