求三个数的最小公倍数的解法之美
从键盘上输入三个数,求其最小公倍数。
分析:最小公倍数是指能整除这三个数的公倍数中的最小者,可以利用循环穷举的方法,看是否能整除这三个数。若能整除这三个数,则输出其中的最小的数即为最小公倍数。
第一种方法:最常见的方法。
常见代码如下:
#include<stdio.h>
int max(int a,int b,int c) //自定义函数max
{if(a>b&&a>c) // 若a的值最大return a; // 返回aelse if(b>a&&b>c) // 若b的值最大return b; // 返回belsereturn c; // 否则返回c
}
void main()
{int x,y,z,i,j,k;printf("请输入三个数:");scanf("%d%d%d",&x,&y,&z); // 从键盘输入三个数k = max(x,y,z); //调用max函数求出其中的最大值i= 1;1hile(1) //while循环,条件值为1{ j = k * i;if((j%x==0)&&(j%y==0)&&(j%z==0)) //满足条件,退出循环break;i++;}printf("最小公倍数为%d\n",j);
}
运行结果如下:
第二种方法:通过短除法实现。
短除法: 短除法思想为求三个数的因素,然后求这些因素的求积。算法设计代码如下:
#include<stdio.h>
int max(int a,int b,int c)
{if(a>b&&b>c)return a;else if(b>a&&b>c)return b;elsereturn c;
}
void main()
{int x,y,z,i,j,k,t=1;printf("请输入三个数:");scanf("%d%d%d",&x,&y,&z);k = max(x,y,z);for(i=2;i<=k;i++){j = 1;while(j){j=0;if(x%i==0){x = x/i;j = 1;}if(y%i==0){y = y/i;j = 1;}if(z%i==0){z = z/i;j = 1;}if(j==1)t = t * i;}k = max(x,y,z);}printf("最小公倍数为:%d\n",t);
}
运行结果如下:
代码分析:利用短除法求三个数的因子,然后求所有因子的乘积,即为最小公倍数,其中 j 作为循环是否进行的标志。
运行结果:该程序的执行结果与算法1 的结果一样。
第三种方法 : 求三个数的最小公倍数,可以先求两个数的最小公倍数,然后利用函数的嵌套求这三个数的最小公倍数。算法如下:
#include<stdio.h>
int f(int x,int y)
{int a, b, c;a = x;b = y;c = x%y;while(c!=0){x = y;y = c;c = x%y;}return a*b/y;
}
void main()
{int a , b , c , d;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);d = f( f(a,b),c); //嵌套调用函数f()求解printf("最小公倍数为:%d\n",d);
}
运行结果如下:
代码分析:第2~15行,自定义函数 f(),用来求两个数的最小公倍数,第21行,嵌套调用函数 f(),求得三个数的最小公倍数。
运行结果:该程序的执行结果与算法1和算法2 的结果一样。
求三个数的最小公倍数的解法之美相关推荐
- python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
题目 求三个数的最小公倍数 思路 首先求两个数的最小公倍数,再求这个最小公倍数与第三个数的最小公倍数就是最终结果 有两种方案求两个数的最小公倍数 1. 分解质因数,也是短除法(在程序上差别不大) 循环 ...
- c语言学习-自定义并调用函数求三个数的最小公倍数
c语言自定义并调用函数求三个数的最小公倍数 程序流程图: 代码: #include<stdio.h> int la1(int m ,int n,int p); int la2(int m ...
- Java求三个数的最小公倍数算法改进(化境)
之前在<Java求3个数的最小公倍数LCM,要求LCM小于11亿时计算结果正确(在CPU性能小于1.8GHz的情况下)>一文中"避免了之前的算法最大计算量的情况"(相对 ...
- 蓝桥杯-核桃的数量 (求三个数的最小公倍数)
题目大意:输入三个数,求出三个数的最小公倍数 题目解析:为了求出三个数的最小公倍数,我们可以先求出其中两个数的最小公倍数,然后再将它与第三个数求一个最小公倍数.我们知道,最大公约数的求法可以通过欧几里 ...
- 求三个数的最小公倍数(C语言)
#include<stdio.h> int Gcd(int a, int b) //求最大公约数(两数乘积/最大公约数=最小公倍数) {return b == 0 ? a:Gcd(b,a% ...
- 求三个数的最大公约数和最小公倍数
题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整数最大公约数 ...
- 如何求多个数的最小公倍数
历届试题 核桃的数量 时间限制:1.0s 内存限制:256.0MB 问题描述 小张是软件项目经理,他带领3个开发组.工期紧,今天都在加班呢.为鼓舞士气,小张打算给每个组发一袋核桃(据传言能 ...
- 求3个数的最小公倍数算法之数论再细化
求3个数的最小公倍数之便捷算法(C# ) https://blog.csdn.net/number1killer/article/details/104681168 求3个数的最大公约数之算法研究集成 ...
- 三种算法求两个正整数的最大公约数和最小公倍数;求三个数的最大公约数和最小公倍数
第二次作业 题目:求两个正整数的最大公约数和最小公倍数. 基本要求:1.程序风格良好(使用自定义注释模板),两种以上算法解决最大公约数问题,提供友好的输入输出. 提高要求:1.三种以上算法解决两个正整 ...
最新文章
- [NC21228]货币系统
- 什么是计算机领域的实时系统
- 智能硬件(1)---十个智能硬件中文网站
- Ubuntu16.04: 和 Windows-7 双系统启动顺序更改
- 在recovery模式下命令控制手机_安卓手机开机密码忘记,解锁教程
- python协程详解_彻底搞懂python协程-第一篇(关键词1-4)
- 22. 栈的压入、弹出队列(C++版本)
- 贪心算法及几个常用的例题
- 2021-08-07-DJ-036 在阿里云服务器上迁移我们的数据库,以后省一台电脑的电费了
- xyz文件怎么生成三维模型_根据三维空间坐标点如何构建三维模型
- 限流 Redis list 列表 Lpush rpop 实现令牌桶 – PHP 实例
- FPGA读取ADXL345
- Java版本和JDK版本对应关系
- 程序江湖事——docker江湖缘
- 车间制造管理系统(上)
- window下diskpart给SD卡分区
- tf.one_hot()的用法
- 长程蓝牙温湿度及光照度传感器 , 带四通道开关及指示灯(集成太阳能微能量采集功能)
- Mac 时间机器 Time Machine 备份速度太慢的解决方法 (加速备份命令)
- 沸点压力计算java_依据相律,恒沸混合物的沸点不随外压的改变而改变。