用欧几里得算法实现两个数的最大公约数和最小公倍数
来源:互联网 发布:与大津算法相似的算法 编辑:程序博客网 时间:2024/05/17 23:56
/************************************************************************
***By : summon ***
***Data : 2010.01.09 ***
***Function : 求两个数的最大公约数和最小公倍数 ***
*** 应用欧几里得算法计算gcd,用n*m=lcm*gcd计算lcm ***
***Version : V1.0 ***
/************************************************************************/
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int STATUS;
STATUS InputData(int *Datan, int *Datam);
STATUS GCDofTwoNum(int Datan, int Datam, int *gcd);
STATUS LCMofTwoNum(int Datan, int Datam, int gcd, int *lcm);
STATUS OutputData(int gcd, int lcm);
int main(int argc, char* argv[])
{
int gcd;
int lcm;
int Datan;
int Datam;
int ret;
ret = InputData(&Datan, &Datam);
ret = GCDofTwoNum(Datan, Datam, &gcd);
ret = LCMofTwoNum(Datan, Datam, gcd, &lcm);
ret = OutputData(gcd, lcm);
return 0;
}
STATUS InputData(int *Datan, int *Datam)
{
if (Datam == NULL || Datan == NULL)
{
return 0;
}
while (1)
{
printf("Please intput two positive int number:");
fflush(stdin);
scanf("%d %d", Datan, Datam);
printf("/n");
if (*Datan < 0 || *Datam < 0)
{
printf("You have inputted unlawful number, again!/n");
continue;
}else
{
break;
}
}
return 1;
}
STATUS GCDofTwoNum(int Datan, int Datam, int *gcd)
{
if (gcd == NULL)
{
return 0;
}
if (Datam > Datan)
{
int temp = Datam;
Datam = Datan;
Datan = temp;
}else if (Datan == Datam)
{
*gcd = Datam;
return 1;
}
while (1)//循环体中n>m
{
if (Datam == 0)
{
*gcd = Datan;
return 1;
}
int ret = Datan%Datam;
Datan = Datam;
Datam = ret;
}
return 1;
}
STATUS LCMofTwoNum(int Datan, int Datam, int gcd, int *lcm)
{
if (lcm == NULL)
{
return 0;
}
*lcm = (int)(Datan*Datam)/gcd;
return 1;
}
STATUS OutputData(int gcd, int lcm)
{
printf("最大公约数=%d/n", gcd);
printf("最小公倍数=%d/n", lcm);
return 1;
}
- 用欧几里得算法实现两个数的最大公约数和最小公倍数
- Java程序实现欧几里得算法-计算两个数的最大公约数
- 求两个数的最大公约数和最小公倍数的算法
- 两个数的最大公约数和最小公倍数的算法
- 欧几里得算法求两个数的最大公约数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数
- 求两个数的最大公约数和最小公倍数?
- 求两个数的最大公约数和最小公倍数
- 回顾二零零九,展望二零一零
- 人生感悟
- USB 3.0实测成绩 - 真的非常快
- Lucene:基于Java的全文检索引擎简介
- 分享个网站素材网址
- 用欧几里得算法实现两个数的最大公约数和最小公倍数
- 搭建BREW开发环境
- 【收藏】羊皮卷(之一)
- vim 自定义命令
- Oracle数据库达人进来帮个忙哈!
- setsockopt函数和udp固定端口发送
- 帮个忙
- 768位RSA算法遭破解,1024位目前安全
- 学习计算机编程语言