![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Написал программу нахождения общего кратного.
Что нужно добавить чтобы находил НАИМЕНЬШЕЕ общее кратное. Код:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
p, n1, m1, n, m, R, a: LongWord;
begin
n:= StrToInt(edit1.text);
m:= StrToInt(edit2.Text);
if (n = 0) or (m = 0) then
R:= 0
else
begin
if m < n then
begin
n1 := m;
m1 := n;
end
else
begin
n1 := n;
m1 := m;
end;
while n1 > 0 do
begin
p := m1 mod n1;
m1 := n1;
n1 := p;
end;
R := m1;
a :=n*m div R;
Edit3.text:=IntToStr(a);
end;
end;
end. |
|
#2
|
||||
|
||||
|
а у тебя разве не Н.О.К. находит ?
(наименьше число, которое без остатка делится на эти оба числа) Последний раз редактировалось eXplorer, 25.10.2011 в 14:17. |
|
#3
|
||||
|
||||
|
Вот ссылка http://lectureroom.net/324.html на функцию поиска НОК.
|
|
#4
|
|||
|
|||
|
а вот самый примитивный способ решения
те путем простого перебора от MAX(z1,z2) до (z1*z2) Код:
function GetMOK(z1,z2:cardinal):cardinal;
begin
Result:=Max(z1,z2);
while (Result mod z1 <>0) or (Result mod Z2 <>0) do
inc(Result);
end; |