文档章节

最大公约数与最小公倍数

涂孟超
 涂孟超
发布于 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
45分钟前
0
0
Confluence 6 数据库和临时目录

数据库 所有的其他数据库,包括有页面,内容都存储在数据库中。如果你安装的 Confluence 是用于评估或者你选择使用的是 Embedded H2 Database 数据库。数据库有关的文件将会存储在 database...

honeymose
59分钟前
1
0
day62-20180820-流利阅读笔记

1.今日导读 2.带着问题听讲解 3.新闻正文(中英文对照) 4.重点词汇 5.拓展内容

aibinxiao
今天
0
0
分布式锁实现及对比

一、问题介绍 日常工作中很多场景下需要用到分布式锁,例如:任务运行(多个节点同一时刻同一个任务只能在一个节点上运行(分片任务除外)),交易接受(前端交易请求发送时,可能由于两次提...

yangjianzhou
今天
7
0
【AI实战】快速掌握TensorFlow(二):计算图、会话

在前面的文章中,我们已经完成了AI基础环境的搭建(见文章:Ubuntu + Anaconda + TensorFlow + GPU + PyCharm搭建AI基础环境),以及初步了解了TensorFlow的特点和基本操作(见文章:快速掌握...

雪饼
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部