a1:=a;b1:=b;
while a1<>b1 do
begin
if a1>b1 then
a1:=a1-b1
else
b1:=b1-a1;
end;
NOD:=a1;
Помогите с прогой(Delphi 7)
Программа определяет наименьшее ощее кратное двух заданных натуральных чисел (до 65535) на основе таблици простых чисел
Вобщем я учусь на 1 курсе и там такое на лето задали, как бы на практику.
Буду признателен если кто поможет.
число2 = другое произведение простых чисел
НОД - наибольший общий делитель
тогда число1 = НОД*X
число2 = НОД*Y
НОК - Наименьшее общее кратное
НОК = НОД*X*Y
Т. е. нужно сначала найти НОД, потом все понятно
НОД можно найти разлагая числа на простые множители и найдя общий набор.
Я бы следовал но плану:
Разложить числа на простые множители
Найти НОД
Найти НОК
Спасибо, но как то всё сложно для меня.
Кому не жалко выложите пожалуйста.
Код:
Оу спасибо) ...Но это ток часть =(
NOK:=a*b div NOD;
Спасибо за помошь, но как из этого слепить прогу?:confused:
Приделать ввод и вывод, вставить в начале begin, а в конце end, объявить переменные...
Если так рассуждать то я это без проблем сделаю, но легче сказать чем сделать =(
почитать книжку про Delphi, научиться создавать диалоги и элементы управления, визуально запрограммировать интерфейс, и в каком-нибудь обработчике, например нажатия кнопки написать свою прогу, а результат по нажатии на эту кнопку вывести в какой-нибудь эдит контрол. Насколько я помню, в Дельфи, благодаря его библиотеке(вроде VCL называется) интерфейс создается за пару щелчков мышки и даже писать ничего не надо. Писать придется только когда будете получать данные из эдитов (число1, число2), когда будете выводить результат, ну и когда будете разрабатывать свою процедуру вычисления НОК.
Код:
{Дано: a, b.
Найти: НОД(a,b), НОК(a,b)}
var
m,i,nod,nok: integer;
begin
{a:=...; b:=...;}
if a>b then m:=b else m:=a;
nod:=1;
for i:=2 to m do
if (a mod i=0) and (b mod i=0) then begin
nod:=i;
break;
end;
nok:=(a*b) div nod;
end;
Найти: НОД(a,b), НОК(a,b)}
var
m,i,nod,nok: integer;
begin
{a:=...; b:=...;}
if a>b then m:=b else m:=a;
nod:=1;
for i:=2 to m do
if (a mod i=0) and (b mod i=0) then begin
nod:=i;
break;
end;
nok:=(a*b) div nod;
end;
а почему не работает? :( а как запустить? :eek: а какую кнопочку нажать? :confused: