Другие языки программирования и технологии

Алгоритмы в паскале. Народ, напишите плиз алгоритм нахождения НОД и алгоритм выделения цифр числа. Заранее благодарю)

ну суть мат модели уже описана. вот алгоритм на естественном языке

пока (a<>0) и (b<>0)
если a>b тогда a:=a mod b
иначе b:=b mod a;
nod:=a+b;

а вот код на паскале

program imya;
uses CRT;
var a,b,nod:word;
begin
writeln('vvedite a i b');
readln(a,b);
while (a<>0) and (b<>0) do
if a>b then a:=a mod b else b:=b mod a;
nod:=a+b;
writeln(nod);
readkey;
end.
Виктор Портнов
Виктор Портнов
3 774
Лучший ответ
НОД. Математическая модель.
Пусть m и n - не равные нулю целые неотрицательные числа и пусть m >= n.
Тогда:

если n = 0, то НОД (m, 0) = m
если n <> 0, то НОД (m, n) = НОД (n, r), где r - остаток от деления m на n.

Реализация на Си:

int ComputeGCD(int m, int n)
{
if (n == 0) {

return m;

} else {

return ComputeGCD(n, m % n);
}
}

Еще реализация:

int ComputeGCD(int m, int n)
{
int r;

while (n != 0) {

r = m % n;
m = n;
n = r;
}

return m;
}

Алгоритм выделения цифр числа.
В цикле, пока число не станет равным нулю, вычисляется
остаток от деления этого числа на основание системы счисления.
Очередной остаток от деления и будет являтся младшей цифрой цисла.

Непосредственно после взятия остатка от деления, чтобы было
возможно излечь сдедующую цифру, число делится на основание
системы счисления.

Реализация (си) :

void PrintNumberDigits(int number, int base)
{
int digit;

do {

digit = number % base;
number = number / base;

printf("Digit: %i\n", digit);

} while (number != 0);
}

Цифры, естественно, будут выводиться с конца (с младшего разряда).

Похожие вопросы