文档章节

最大公约数与最小公倍数

涂孟超
 涂孟超
发布于 2014/09/26 15:38
字数 371
阅读 8
收藏 0

本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{求最大公约数
 算法: 假如 x > y, x mod y 取余数后,
 y 付给 x、余数付给 y,
 然后重复运算, 最后非 0 的余数就是最大公约数
}
function zdgys(x,y: Cardinal): Cardinal;
var
  n: Integer;
begin
  n := y;
  if x < y then
  begin
    y := x;
    x := n;
  end;

  while n > 0 do
  begin
    n := x mod y;
    x := y;
    if n > 0 then y := n;
  end;
  Result := y;
end;

{求最小公倍数
 算法: x * y div 它们的最大公约数
}
function zxgbs(x,y: Cardinal): Cardinal;
var
  m,n: Cardinal;
begin
  m := x * y;
  n := y;
  if x < y then
  begin
    y := x;
    x := n;
  end;

  while n > 0 do
  begin
    n := x mod y;
    x := y;
    if n > 0 then y := n;
  end;

  Result := m div y;
end;

{测试}
procedure TForm1.Button1Click(Sender: TObject);
const
  str = '%0:d 与 %1:d 的最大公约数是 %2:d'#13#10'%0:d 与 %1:d 的最小公倍数是 %3:d';
var
  x,y,a,b: Cardinal;
begin
  x := StrToIntDef(Edit1.Text, 1);
  y := StrToIntDef(Edit2.Text, 1);
  a := zdgys(x, y);
  b := zxgbs(x, y);
  ShowMessageFmt(str, [x,y,a,b]);
end;

end.

 
 
 
 
 

 

 

  

窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 160
  ClientWidth = 268
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  PixelsPerInch = 96
  TextHeight = 13
  object Button1: TButton
    Left = 176
    Top = 14
    Width = 75
    Height = 25
    Caption = 'Button1'
    TabOrder = 0
    OnClick = Button1Click
  end
  object Edit1: TEdit
    Left = 17
    Top = 16
    Width = 64
    Height = 21
    TabOrder = 1
    Text = 'Edit1'
  end
  object Edit2: TEdit
    Left = 98
    Top = 16
    Width = 63
    Height = 21
    TabOrder = 2
    Text = 'Edit2'
  end
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2009/03/10/1407593.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
最大公倍数

华为机试题,以前做过,复习了一点思路。 //题目描述////正整数A和正整数B 的最小公倍数是指 能被A和B整除的最小的正整数值,设计一个算法,求输入A和B的最小公倍数。////输入描述 ://输入两...

ranjiewen
2016/09/20
0
0
C语言 -- 递归求最大杏彩源码下载公约数和最小公倍数

递归求杏彩源码下载论坛:haozbbs.com Q1446595067最大公约数和最小公倍数 int gcd(int a, int b) { return a % b ? gcd(b, a % b) : b; } 用辗转相除法求最大公约数,用递归写的代码会比循环...

iuiu230
07/04
0
0
c语言求最小公倍数,最大公约数

<1> 用辗转相除法求最大公约数 算法描述: m对n求余为a, 若a不等于0 则 m <- n, n <- a, 继续求余 否则 n 为最大公约数 <2> 最小公倍数 = 两个数的积 / 最大公约数 本文转自NewPanderKing51CT...

技术小甜
2017/11/14
0
0
金阳光测试算法专题——精选小算法汇总

[本文出自天外归云的博客园] 本文是对金阳光测试算法专题中一些小算法的精选汇总,利于思考与收获。 注意:原版是用java解,以下题目部分使用python解(python3),对于题目中描述不清楚的地...

天外归云
2017/06/13
0
0
最大公约数与最小公倍数(gcd,lcm)

先来说求最大公约数的方法 1.欧几里得算法(辗转相除法) int gcd(int a,int b){return b==0?a:gcd(b,a%b);}设两数为a、b(a>b),用gcd(a,b)表示a,b的最大公约数,r=a (mod b) 为a除以b的余数...

ZscDst
2017/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

storm 环境搭建

1.下载解压 下载地址:http://storm.apache.org/downloads.html

MrPei
13分钟前
0
0
Python Base - 读写文件,字符串拼接,单引号

字符转义 读写文件cvs 字符串拼接,替换 import csvcsv_file_name = 'cardbin.csv'# insert into `card_bin_code` (name_of, code_of, card_no_prefix, bank_code) values ('中国银行......

园领T
14分钟前
0
0
基于JQUERY BOOTSTRAP 最简单的loading遮罩层

<%--loading遮罩层--%><div class="modal fade" id="loadingModal" backdrop="static" keyboard="false">   <div style="width: 200px;height:20px; z-index: 20000; position: abs......

颖辉小居
15分钟前
0
0
springboot+kafka

1,首先springboot对kafka的支持也很好,同样是在配置文件中配置好参数,然后就可以直接使用。先说一下,很简单,,,不要怕 2,我用的依赖是 <dependency> <groupId>org.springframewor...

我真是小菜鸡
19分钟前
2
0
webservice动态客户端自我记录备份(spring boot)

动态客户端相比直接调用webservice的客户端代码要简单很多,但实际上很多工作是java自己替我们做掉了。简单记录一下内容,以备后续使用: pom文件只需要引入: <!-- CXF webservice --><de...

checkboxMan
24分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部