ну суть мат модели уже описана. вот алгоритм на естественном языке
пока (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.
Другие языки программирования и технологии
Алгоритмы в паскале. Народ, напишите плиз алгоритм нахождения НОД и алгоритм выделения цифр числа. Заранее благодарю)
НОД. Математическая модель.
Пусть 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);
}
Цифры, естественно, будут выводиться с конца (с младшего разряда).
Пусть 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);
}
Цифры, естественно, будут выводиться с конца (с младшего разряда).
Похожие вопросы
- Помогите пожалуйста! Как Разработать алгоритм нахождения суммы и кол-ва четных чисел натурального ряда, кот. >K, но
- Кто в бейсике шарит напишите плиз алгоритм из задания (вн)??
- Люди напишите пожалуйста подробно ! как узнать исходный код программ и игр ? Заранее благодарен .
- Как ответ на эту задачу записать в паскале, либо просто в алгоритм?
- Помогите найти, алгоритм нахождения Произведения простых чисел, на С++, или литературу которая поможет разобраться.
- Предложите алгоритм нахождения количества максимальных чисел из трех введенных чисел.
- Паскаль!!)) входной файл содержит два числа x и y. Выходной последнюю цифру числа x в y степени! помогите пожалуйста!
- Приведите алгоритмы нахождения простых чисел в заданном промежутке
- c++ сильно завис алгоритм нахождения простых чисел - пару вопросов ?
- <<ПОМОГИТЕ! НАПИСАТЬ ПРОГРАММУ НА СИ ИЛИ ПАСКАЛЕ КОТОРАЯ ВЫВОДИТЬ СУММУ ЦИФР ЧИСЛА ОТ 1 ДО N