Форум программистов, компьютерный форум, киберфорум
Наши страницы
Turbo Pascal
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/16: Рейтинг темы: голосов - 16, средняя оценка - 5.00
Laider
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 13
1

Расчет наибольшего общего делителя двух натуральных чисел, используя алгоритм Евклида

23.09.2014, 16:36. Просмотров 2997. Ответов 3
Метки нет (Все метки)

Даны натуральные числа a и b обозначающие соответственно числитель и знаменатель дроби. Сократить дробь, т.е найти такие натуральные числа p и q, не имеющие общих делителей, что p/q=a/b. ( Определить процедуру для расчета наибольшего общего делителя двух натуральных чисел, используя алгоритм Евклида).
Заранее спасибо за помощь.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.09.2014, 16:36
Ответы с готовыми решениями:

Алгоритм Евклида нахождения наибольшего общего делителя (НОД) неотрицательных целых чисел
Уважаемые и бесконечно мною любимые Локи и Цербер. Будьте кисаньками (хоть вы и песики :D ),...

Алгоритм Евклида нахождения наибольшего общего делителя (НОД) неотрицательных целых чисел
Алгоритм Евклида нахождения наибольшего общего делителя (НОД) неотрицательных целых чисел основан...

Определение наибольшего общего делителя двух натуральных чисел
Составьте программу определения наибольшего общего делителя двух натуральных чисел. (Реализовать в...

Определение наибольшего общего делителя двух натуральных чисел.
198. Составьте программу определения наибольшего общего делителя двух натуральных чисел....

Определение наибольшего общего делителя двух натуральных чисел
7. Составьте программу определения наибольшего общего делителя двух натуральных чисел

3
hoch
Заблокирован
23.09.2014, 18:08 2
Эта программа производит сокращение правильной
дроби. Процедура Эвклида в программе. Хотя ее было
бы лучше оформить в виде функции. Что касается
неправильной дроби, то стоит добавить строку
C:= A div B (для выделения целой части)
A:=A-B*C (теперь дробь А/В будет правильной)
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
uses Crt;
var a,b,c,d: integer;
 
procedure ewkl(a,b: integer);
begin
   while b > 0 do begin
      if b > 0 then d:= c;
      c:= a mod b;
      a:= b;
      b:= c;
   end
end;
 
begin
   clrscr;
   Writeln('A=?');
   readln(a);
   Writeln('B=?');
   readln(b);
   ewkl(a,b);
   Writeln(a div d,'/',b div d);
   readln
end.
Добавлено через 9 минут
Чтобы сократить неправильную дробь проще всего
a и b поменять местами
0
Laider
0 / 0 / 0
Регистрация: 23.09.2014
Сообщений: 13
23.09.2014, 18:19  [ТС] 3
Спасибо, друг!
0
bormant
Модератор
Эксперт Pascal/DelphiЭксперт NIX
5206 / 3081 / 2311
Регистрация: 22.11.2013
Сообщений: 8,626
23.09.2014, 22:18 4
hoch,
НОД или GCD проще сделать так:
Pascal
1
2
3
4
5
6
7
8
function GCD(a, b: Integer): Integer;
var c: Integer;
begin
  while b<>0 do begin
    c:=a mod b; a:=b; b:=c;
  end;
  GCD:=abs(a);
end;
Ну и тело программки тогда превратится в
Pascal
1
2
3
4
5
6
var a, b, d: Integer;
begin
  Write('Введите числитель и знаменатель: '); ReadLn(a,b);
  d:=GCD(a,b);
  WriteLn(a div d,'/',b div d);
end.
1
23.09.2014, 22:18
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.09.2014, 22:18

Вычисление наибольшего общего делителя двух натуральных чисел
Составить программу для вычисления наибольшего общего делителя двух натуральных чисел.

Составьте программу определения наибольшего общего делителя двух натуральных чисел.
(Реализовать в виде программы следующий вариант алгоритма Эвклида нахождения наибольшего общего...

Составьте программу определения наибольшего общего делителя двух натуральных чисел
Составьте программу определения наибольшего общего делителя двух натуральных чисел. (Реализовать в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.