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

这篇具有很好参考价值的文章主要介绍了C语言——输入两个正整数 m 和 n。求其最大公约数和最小公倍数。。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

方法一 

#include <stdio.h>
int main()
{
    int m, n, i, x, y;
    x = 1, y = 0;
    printf("请输入两个正整数m和n:\n");
    scanf("%d%d", &m, &n);
    for (i = 1; i <= m && i <= n; i++) 
    {
        if (m % i == 0 && n % i == 0) 
        {
            x = i;
        }
    }
    y = (m * n) / x; 

    printf("最大公约数是:%d\n", x);
    printf("最小公倍数是:%d\n", y);
    return 0;
}

1、首先,程序通过printf函数提示用户输入两个正整数m和n,然后使用scanf函数接收用户的输入并将值分别存储到变量m和n中。

2、接下来,程序进入一个for循环,从1开始遍历直至i等于较小的数(m或n),检查当前数值i是否能同时整除m和n。如果i既能被m整除又能被n整除(即满足条件 m % i == 0 && n % i == 0),那么i就是m和n的一个公约数,并将其赋值给变量x。在这个过程中,x最终会存储最大公约数。

3、在循环结束后,根据数学公式,两个数a和b的最小公倍数可以通过它们的乘积除以它们的最大公约数得到,即:LCM(a, b) = (a * b) / GCD(a, b)。因此,此处直接计算y的值,通过(m * n) / x得到最小公倍数,并将其赋值给变量y。

4、最后,程序利用printf函数输出最大公约数x和最小公倍数y的值。

 

 方法二(推荐)

#include <stdio.h>

int gcd(int m, int n);
int lcm(int m, int n);

int gcd(int m, int n)
{
    while (n != 0)
    {
        int temp = m % n;
        m = n;
        n = temp;
    }
    return m;
}

int lcm(int m, int n)
{
    return (m * n) / gcd(m, n);
}

int main()
{
    int m, n;
    printf("请输入两个正整数:\n");
    scanf("%d%d", &m, &n);
    if (m <= 0 || n <= 0)
    {
        printf("错误:输入必须为正整数。\n");
    }
    else
    {
        int result_gcd = gcd(m, n);
        int result_lcm = lcm(m, n);
        printf("这两个数的最大公约数是:%d\n", result_gcd);
        printf("这两个数的最小公倍数是:%d\n", result_lcm);
    }

    return 0;
}

1、gcd函数

         函数原型为 int gcd(int m, int n),接受两个整数参数m和n。它采用辗转相除法(欧几里得算法)计算并返回这两个数的最大公约数(Greatest Common Divisor, GCD)。在循环中,将较大的数m除以较小的数n,并用余数替换较大的数,然后继续此过程,直到余数为0,此时较小的数即为最大公约数。

2、lcm函数

        函数原型为 int lcm(int m, int n),同样接受两个整数参数m和n。根据数学原理,两数乘积除以它们的最大公约数即可得到它们的最小公倍数(Least Common Multiple, LCM)。所以此函数通过调用gcd函数求出m和n的最大公约数,然后利用公式 (m * n) / gcd(m, n) 计算并返回最小公倍数。

3、main函数文章来源地址https://www.toymoban.com/news/detail-771612.html

  • 首先提示用户输入两个正整数。
  • 使用scanf从标准输入读取这两个数。
  • 检查输入的数值是否为正整数,若不是则输出错误信息。
  • 如果输入合法,则调用gcd函数和lcm函数分别计算这两个数的最大公约数和最小公倍数。
  • 最后,输出这两个数的最大公约数和最小公倍数。

到了这里,关于C语言——输入两个正整数 m 和 n。求其最大公约数和最小公倍数。的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 求其最大公约数和最小公倍数,一行代码完成

    题目:输入两个正整数 m 和 n,求其最大公约数和最小公倍数。 求出最大公约数就行,最小公倍数用m*n除以最大公约数就行

    2024年02月05日
    浏览(33)
  • C语言:给定两个数,求这两个数的最大公约数(新思路:辗转相除法)

    从键盘 输入两个数 , 求 这 两个数 的 最大公约数 。                       =========================================================================                         (一). 生成 相关变量 ; 从键盘 输入两个数 ; 再 使用 三目操作符(条件操作符) 找出 较小值 。        

    2024年02月09日
    浏览(30)
  • 【Python 基础】输入两个数,求它们的求最大公约数(伪码描述 + Python实现)| 区块链 面试题:区块链技术中的“闪电网络”是什么?有什么作用?

      “这样的年代没有谁是值得信任的,你只能靠自己。”     🎯作者主页: 追光者♂🔥          🌸个人简介:   💖[1] 计算机专业硕士研究生💖   🌿[2] 2023年城市之星领跑者TOP1(哈尔滨)🌿   🌟[3] 2022年度博客之星人工智能领域TOP4🌟   🏅[4] 阿里云社区特邀专家博

    2024年02月01日
    浏览(49)
  • 你会求两个数的最大公约数吗(三种方法)?

    目录 前言 一、枚举法 二、辗转相除法 三、更相减损法 如何求两个数的最大公约数是非常经典的问题,求解的方法也有很多,本文主要介绍其中的三种方法,分别是: 枚举法、辗转相除法和更相减损法 。   两个数的最大公约数一定小于或等于两数中较小的数,并且这两个

    2023年04月08日
    浏览(29)
  • C语言—最大公约数和最小公倍数

    作者主页: paper jie的博客_CSDN博客-C语言,算法详解领域博主 本文作者: 大家好,我是paper jie,感谢你阅读本文,欢迎一建三连哦。 本文录入于 《算法详解》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将算法基础知识一网打尽,希望

    2024年02月13日
    浏览(26)
  • 【C语言】求最大公约数和最小公倍数

    方法一:利用 定义法 求最大公因数和最小公倍数 方法二:最小公倍数求法同上, 最大公约数方法不同 方法一方法二的结果示例如下   方法三:利用 辗转相除法 求最大公约数和最小公倍数 法(1)结果示例如下:  法(2)示例结果如下:  以上就是用C语言循环和循环之前的

    2024年02月07日
    浏览(33)
  • 最大公约数的三种求法——(C语言)

    如何求解最大公约数,首先了解什么是最大公约数, 如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。 例: 在2、4、6中,2就是2,4,6的最

    2024年02月02日
    浏览(36)
  • C语言—求最大公约数(4种算法思路)

    如果大数可以整除小数,那么最大公约数为小数。如果不能整除小数,那么这两个数就按大到小依次对比小数小的数求余,遇到都能够整除的,就是最大公约数。 用a对b求余,若余数为0,则除数b为最大公约数。若余数不为0,将此余数r作为新的除数,b作为新的被除数,重新

    2024年04月13日
    浏览(23)
  • 【C语言】辗转相除法求最大公约数(详解)

    辗转相除法(又称欧几里德算法)是一种用于求解两个整数的最大公约数的方法。本文将使用C语言来实现辗转相除法,并对其原理进行解释。 辗转相除法的原理非常简单。假设有两个整数a和b,其中a b。通过对a除以b求余数,得到余数r1。然后把b除以r1求余数,得到余数r2。如

    2024年02月07日
    浏览(35)
  • 【c语言】—求最大公约数和最小公倍数多种方法

    目录 一.求最大公约数 1.枚举法求最大公约数 2.辗转相除法 二.求最小公倍数 1.枚举法求最小公倍数 2.简易法 3.公式法 思路:先求两个数中的最小值,最大公约数不可能大于两个数的最小数 比如6和18,最大公约数就是6 再如3和9,最大公约数就是3 然后再从1开始循环遍历到最小

    2024年02月08日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包