问题描述

求任意两个正整数的最小公倍数(LCM)。

问题分析

最小公倍数(Least Common Multiple,LCM),如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数,对于两个整数来说,指该两数共有倍数中最小的一个。计算最小公倍数时,通常会借助最大公约数来辅助计算。

最小公倍数=两数的乘积/最大公约(因)数,解题时要避免和最大公约(因)数问题混淆。

对于最小公倍数的求解,除了利用最大公约数外,还可根据定义进行算法设计。要求任意两个正整数的最小公倍数即,求出一个最小的能同时被两整数整除的自然数。

算法设计

对于输入的两个正整数m和n每次输入的大小顺序可能不同,为了使程序具有一般性,首先对整数所m和n进行大小排序,规定变量m中存储大数、变量n中存储小数。

输入的两个数,大数m是小数n的倍数,那么大数m即为所求的最小公倍数;若大数m不能被小数n整除则需要寻找一个能同时被两数整除的自然数。

从大数m开始依次向后递增直到找到第一个能同时被两数整除的数为止,所以循环变量i的初值为寻找第一个能同时被两整数整除的自然数,并将其输出。需要注意的是,在找到第一个满足条件的i值后,循环没必要继续下去,所以用break来结束循环。

在上面的分析过程中没有提到循环变量的终止条件,因i的最大值不能确定,像这种终止条件不确定的情况如何来表示?方法有两种:

第一,可以把判定条件表示成循环变量满足的基本条件,如本例终止条件可表示成i>0;

第二,终止条件省略不写,利用循环体中的语句结束循环,如在找到第一个满足条件的自然数时利用break语句结束循环。

下面是完整的代码:

#include<stdio.h>int main(){int m, n, temp, i;printf("Input m & n:");scanf("%d%d", &m, &n);if(m<n)  /*比较大小,使得m中存储大数,n中存储小数*/{ /*交换m和n的值*/temp=m;m=n;n=temp;}for(i=n; i>0; i--)  /*按照从大到小的顺序寻找满足条件的自然数*/if(m%i==0 && n%i==0){/*输出满足条件的自然数并结束循环*/printf("The GCD of %d and %d is: %d\n", m, n, i);break;}return 0;}

运行结果:

Input m & n:6 24

The LCW of 24 and 6 is: 24

不管你是转行也好,初学也罢,进阶也可,如果你想学编程,进阶程序员~

【值得关注】我的 编程学习交流俱乐部!【点击进入】

全栈程序员正在等你加入~

【C语言程序设计】C语言求最小公倍数(详解版)!相关推荐

  1. java 求最小公倍数详解

    想了解更多算法题,可以关注微信公众号"数据结构和算法",每天一题为你精彩解答.也可以扫描下面的二维码关注 ​1,求最小公倍数,最简单粗暴的一种方式就是一个个试 public int ...

  2. c语言程序设计中 编写韩束,详解C语言函数

    函数的定义 函数的定义如下: 类型 函数名(形式参数) { 代码块 } 代码块包含了局部变量的声明和函数调用所要执行的语句. return语句 return 语句的语法如下: return expre ...

  3. 关于c语言程序的重点问题,c语言程序设计题跪求高人的复杂版~慢步不要紧主要是要对~题目:作? 爱问知识人...

    呵呵,就完了,晚上就给你答案哈,你多等等~~~ 恩,完工了,你看看吧: //注:本程序因涉及到引用即"&",所以得保存为.cpp的后缀名再用c 编译器进行编译 #inclu ...

  4. 互为质数的勾股数c语言,C语言求勾股数(详解版)

    搜索热词 问题描述 求100以内的所有勾股数. 所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c). 问题分析 根据"勾股数"定义,所求三角形三边应满足条件 a2 ...

  5. C语言程序设计(谭浩强第五版)——习题

    C语言程序设计(谭浩强第五版)--习题 第3章 最简单的C程序设计--顺序程序设计 第4章 选择结构程序设计 第5章 循环结构程序设计 第6章 利用数组处理批量数据 第3章 最简单的C程序设计--顺序 ...

  6. c语言50到100套,c语言51-100套试题答案及详解.pdf

    c语言51-100套试题答案及详解 2 double ave=0.0; 第 51 套 试题答案及详解 3 *n=0; 4 for(i=0; i 5 ave /=N; /* 计算平均值 */ 一.程序填 ...

  7. c语言编程 输入螺旋数组,C语言 经典题目螺旋矩阵 实例详解

    C语言 经典题目螺旋矩阵 实例详解 C语言 经典题目螺旋矩阵 //N阶螺旋矩阵 #include #include int main() { int N,i,j,n,num=1; int a[10][ ...

  8. c语言二级指针有什么作用,C语言中二级指针的实例详解

    C语言中二级指针的实例详解 C语言中二级指针的实例详解 用图说明 示例代码: #include int main(int argc, const char * argv[]) { // int a = ...

  9. 1000以内完数c语言程序_C语言经典面试题目及答案详解(二)

    接着上次来说,C语言经典面试题目及答案详解(一)当中大部分是一些概念和理解的东西 ,今天说一说实践操作,有关c的经典程序. 1.输出9*9口诀.共9行9列,i控制行,j控制列. #include &q ...

  10. c语言sort函数_C语言经典面试题目及答案详解(二)

    接着上次来说,C语言经典面试题目及答案详解(一)当中大部分是一些概念和理解的东西 ,今天说一说实践操作,有关c的经典程序. 1.输出9*9口诀.共9行9列,i控制行,j控制列. #include 2. ...

最新文章

  1. win10安装jdk1.8
  2. 关于FI凭证的字段状态
  3. 我对“POST和GET的区别”的理解
  4. Android悬浮按钮锚点位置,Android 滑动定位+吸附悬停效果实现
  5. redis中几种数据存储方式的比较
  6. 努比亚z17s刷原生安卓_电脑运行手机APP,不会没关系,我推荐你使用显卡服务器运行安卓模拟器...
  7. P2415 集合求和(python3实现)
  8. RSA 数字签名算法(Java版)
  9. MATLAB符号运算(3)
  10. 戴明理论、朱兰理论、克鲁斯比理论和田口玄一理论
  11. 谷歌如何在设计上脱胎换骨
  12. 软考高级 真题 2016年下半年 信息系统项目管理师 综合知识
  13. Android网络验证逆向,【Android逆向】去除无聊的网络验证弹窗与360加固
  14. 5APMP项目管理:PMP考试备考经验学习方法和模拟考题(1-经验篇)
  15. npm install 安装一直报错Error EPERM operation not permitted, mkdir
  16. Redis 跳跃表实现原理 时间复杂度分析
  17. 当前目录.和上一级目录..的作用
  18. 对于有大量重复数据的表添加唯一索引
  19. Post和Get,Post和Put请求的区别
  20. 巧用搜狗输入法输入英文单词

热门文章

  1. 「五福一安」大小的 18W 充电器 — Anker Nano 18W 评测
  2. 没经验能做seo专员吗
  3. 从IT思维到AI思维系列:2.人工智能概念和应用场景
  4. php yi ju hua,汉音对照 这句话应该如何翻译? zhe ju hua ying gai ru he fan yi ? - 王朝网络 - wangchao.net.cn...
  5. 公众号运营,如何快速找到内容定位?
  6. c语言数组判断不及格人数,C语言编程 运用数组求不及格人数
  7. js三座大山——异步机制和单线程
  8. Exceeded checkpoint tolerable failure threshould【记一次flink上线异常】
  9. mongdb系列之最详细基础知识
  10. 自动编码器在野外去除遮挡_在野外作曲