关闭

习题 5.3 输入两个正整数m和n,求其最大公约数和最小公倍数。

标签: c语言设计
1142人阅读 评论(0) 收藏 举报
分类:

C程序设计 (第四版) 谭浩强 习题5.3 个人设计

习题 5.3 输入两个正整数m和n,求其最大公约数和最小公倍数。

代码块

最大公约数与最小公倍数的乘积是两个数的乘积。

方法1:(利用while循环结构和欧几里得算法)

#include <stdio.h>
int main()
{
    int m, n, a, b, r, g;
    //输入正整数m和n
    printf("Please enter m & n: ");
    scanf("%d %d", &m, &n);
    a = m;
    b = n;
    r = m % n;
    while (r != 0){
        m = n;
        n = r;
        r = m % n;
    }
    g = a * b / n;
    printf("HCF=%d\n", n);  //最大公约数
    printf("LCM=%d\n", g);  //最小公倍数
    return 0;
}

方法2:(利用for循环结构和短除算法)

#include <stdio.h>
int main()
{
    int m, n;
    //输入正整数m和n
    printf("Please enter m & n: ");
    scanf("%d %d", &m, &n);
    //短除法判断
    for (int i=2, s=1, x=m, y=n; i<=m && i<=n;)
        !(m%i) && !(n%i) ? s*=i, m/=i, n/=i, i=2 : i++;
    printf("HCF=%d\n", s);                    //输出最大公约数
    printf("LCM=%d\n", x*y/s);                //输出最小公倍数
    return 0;
}

方法3:(利用函数的模块化设计)

#include <stdio.h>
void input();                              //定义输入函数
int HCF(int x, int y);                     //定义最大公约数函数
int LCM(int x, int y);                     //定义最小公倍数函数
int m, n;                                  //定义全局变量
int main()
{
    input();                               //调用输入函数
    printf("HCF=%d\n", HCF(m, n));         //输出最大公约数
    printf("LCM=%d\n", LCM(m, n));         //输出最小公倍数
    return 0;
}
//输入函数
void input()
{
    printf("Please enter m & n: ");
    scanf("%d %d", &m, &n);
}
//最大公约数函数
int HCF(int x, int y)
{
    for (int i=2, s=1; i<=x && i<=y;)
        !(x%i) && !(y%i) ? s*=i, x/=i, y/=i, i=2 : i++;
    return s;
}
//最小公倍数函数
int LCM(int x, int y)
{
    return x*y/HCF(x, y);
}
0
1
查看评论

(50道编程题)输入两个正整数m和n,求其最大公约数和最小公倍数。php

function func($m,$n){ $x=2; $y=0; for($a=2;$m>=$a;$a++){ if($m%$a==0&&$n%$a==0){ $x=$a; } } echo "最大公约数是:".$x.""...
  • u010454986
  • u010454986
  • 2015-09-21 00:38
  • 397

Java基础编程之输入两个正整数m和n,求其最大公约数和最小公倍数。

package world; import java.util.Scanner;public class Max_Min { public static void main(String[]args){ Scanner scan = new Scanner(System.in...
  • u011506446
  • u011506446
  • 2015-12-02 16:22
  • 10140

java小算法—输入两个正整数m和n,求其最大公约数和最小公倍数

public class Num4{ public static void main(String[] args){ int m,n; try{ m = Integer.parseInt(args[0]); n = Integer.parseInt(args[1]); ...
  • weixin_37730482
  • weixin_37730482
  • 2017-05-27 13:35
  • 814

输入两个正整数m和n,求其最大公约数和最小公倍数 C/C++

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 2.程序源代码: #include int main() { int a,b,num1,num2,temp; printf("请输入2个正整数:\n"); sca...
  • zcdy810
  • zcdy810
  • 2012-10-01 16:02
  • 13491

在java中实现输入两个正整数m和n,求最大的公约数和最小公倍数

也是在java学习宝典看到的一个题目,用java来实现把: package excise; /*在java中实现输入两个正整数m和n,求最大的公约数和最小公倍数*/ import java.util.Scanner; public class T008 { public static void ...
  • luoyexuge
  • luoyexuge
  • 2015-10-31 12:13
  • 3662

Java小程序:输入两个正整数m和n,利用辗除法求其最大公约数

java:输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
  • yuerliang
  • yuerliang
  • 2016-05-24 17:15
  • 1669

#输入两个正整数m和n,求其最大公约数和最小公倍数

__author__ = 'zhouhai' #输入两个正整数m和n,求其最大公约数和最小公倍数 if  __name__ == '__main__':     number1_input = input("...
  • laichunmei2006
  • laichunmei2006
  • 2017-09-08 12:48
  • 404

C语言实例12——输入两个正整数m和n,求其最大公约数和最小公倍数。

题目:输入两个正整数m和n,求其最大公约数和最小公倍数。 //程序分析:利用辗除法。 #include int main(){ int a,b,num1,num2,temp; printf("please input two number:\n"); scanf(&quo...
  • LiuJiuXiaoShiTou
  • LiuJiuXiaoShiTou
  • 2016-11-30 21:57
  • 2178

JAVA 输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。

//【程序6】Test1.java GcdTest.java后者是辗转相除法 题目: //输入两个正整数m和n,求其最大公约数和最小公倍数。 1.程序分析:利用辗除法。 public class GcdTestApp { /** * @param args */ public ...
  • u014657292
  • u014657292
  • 2014-04-11 18:38
  • 2481

【程序6】 题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

/* 2017年3月2日15:10:11 java基础50道经典练习题 例6 Author:ZJY(&&) Purpose:最大公约数和最小公倍数的应用 最大公约数:把每个数分别分解质因数,再把各数中的全部公有质 因数提取出来连乘,所得的积就是这几个数的最大公约数。 ...
  • xiyuan255
  • xiyuan255
  • 2017-03-13 21:22
  • 315
    个人资料
    • 访问:72119次
    • 积分:1878
    • 等级:
    • 排名:千里之外
    • 原创:117篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条
    最新评论