[c语言]最小公倍数和最大公约数(详细步骤求解)
[c语言]最小公倍数和最大公约数(详细步骤求解)
1.(求解前需知)
假定你有两个数a,b。首先,你需要了解的是 a*b=两者的最大公约数 * 最小公倍数。
也就是说你只要求解出其中一个,就可以得到另外一个。理论存在,代码走起。
2.确保a为最大数,b为最小数
在编译之前,你需要保证的是数a为二者中的最大数,数b为二者中的最小数。可以建立临时变量temp,利用if语句完成此需求
if(a<b)
{temp = a;a = b;b = temp;
}
3.求解最大公约数
常用方法为①辗转相除法,②循环求余法(穷举法)
①辗转相除法。
顾名思义,就是①第一步的除数变成下一步的被除数,②第一步求得的余数变成下一步的除数,循环多次,当等到余数为0时,此时的除数就是最大公约数。理论存在,代码走起。
假设r为二者的余数。
while(b!=0)
{r= a % b;a = b;b = r;
}
return a;
②循环求余法。
顾名思义,最大公约数要求a和b都能整除,最极限的情况是b就为a的最大公约数。那么我们可以利用for循环来完成上述要求,就是令循环的初始值i为b(两者中的最小数),让a取余i为0的同时b取余i也为0,无法同时为真,就让i减1,继续执行上述条件,直到a取余i为0的同时b取余i也为0,就立刻跳出循环。(因为求的是最大公约数,不是约数,得到即可终止。)理论存在,代码走起。
for(i=b;i>0;i--)
{if(a%i==0&&b%i==0){printf("最大公约数为%d\n",i);break;}
}
4.求解最小公倍数。
①利用a*b/最大公约数=最小公倍数。②循环求余法(穷举法)
①可以配合前面的代码。
设置一个全局变量p=a*b(负责存放二者的乘积),p/i(上面求得的最大公约数)即可得最小公倍数。
p=a*b;
printf("最小公倍数为%d\n",p/i);
②循环求余法。
与上面求最大公约数差不多,我们先用j表示最小公倍数,最小公倍数的要求是j能整除a的同时也能整除b,即要求 j取余a=0的同时j取余b也为0,极限情况是a就是二者中的最小公倍数。那我们利用for循环,令j=a,j取余a为0的同时j取余b也为0,无法同时为真,就令j加1,直到j取余a为0的同时j取余b也为0就跳出循环.(因为求的是最小公倍数,不是倍数,得到即可终止。)理论存在,代码走起。
for(j=a;j>0;j++)
{if(j%a==0&&j%b==0){printf("最小公倍数为%d\n",j);break;}
}
5.完整代码如下:
①同时求最大公约数和最小公倍数
#include<stdio.h>
int POTATO1(int a,int b)
{int r,temp=0;if( a < b)//交换a,b,保证最大数放在a中,最小数放在b中{temp=a;a=b;b=temp;}while(b){r=a % b;//求a/b的余数a=b; b=r;}return a;//返回求得的最大公约数
}
int main()
{int a,b,p;
printf("请输入两个正整数a,b:\n");
scanf("%d %d",&a,&b);
p=a*b;
printf("它们的最大公约数为:%d\n",POTATO1(a,b));
printf("它们的最小公倍数为:%d\n",p/POTATO1(a,b));
}
②单独求解
最大公约数
#include<stdio.h>
int main()
{int a, b, temp, i;printf("请输入两个正整数a,b:\n");scanf("%d%d", &a, &b);if(a<b) /*比较大小,使得a中存储大数,b中存储小数*/{ /*交换a和b的值*/temp=a;a=b;b=temp;}for(i=a; i>0; i--) if(a%i==0 && b%i==0){printf("它们的最大公约数为%d\n", a, b, i);break;}return 0;
}
最小公倍数
#include<stdio.h>
int main()
{int a, b, temp, j;printf("请输入两个正整数a,b:\n");scanf("%d%d", &a, &b);if(a<b) /*比较大小,使得a中存储大数,b中存储小数*/{temp = a;a = b;b = temp;}for(j=a; j>0; j++) if(j%a==0 && j%b==0){printf("它们的最小公倍数为%d\n", a, b, j);break;}return 0;
}
如果看到这里感觉有帮助的话,请给土豆哥点个赞哦,嘻嘻!!!
[c语言]最小公倍数和最大公约数(详细步骤求解)相关推荐
- svn中文语言包安装(最详细步骤)+Language Pack+TortoiseSVN 安装
原文链接:https://blog.csdn.net/massillon/article/details/102780782 svn中文语言包安装(最详细步骤) 一. 查看自己的SVN 版本(这里省略 ...
- c语言求最小公倍数和最大公约数三种算法
C语言求最小公倍数和最大公约数三种算法(经典) 求最小公倍数算法: 最小公倍数=两整数的乘积÷最大公约数 求最大公约数算法: (1)辗转相除法 有两整数a和b: ① a%b得余数c ② 若c=0,则b ...
- C语言求最小公倍数和最大公约数三种算法(经典)
C语言求最小公倍数和最大公约数三种算法(经典) 最小公倍数:数论中的一种概念,两个整数公有的倍数成为他们的公倍数,其中一个最小的公倍数是他们的最小公倍数,同样地,若干个整数公有的倍数中最小的正整数称为 ...
- 三、Hive数据仓库应用之Hive数据操作语言(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7)
Hive远程模式部署参考: 一.Hive数据仓库应用之Hive部署(超详细步骤指导操作,WIN10,VMware Workstation 15.5 PRO,CentOS-6.7) Hive数据定义语言 ...
- c语言编写音乐播放器完整代码(mciSendString函数的使用方法,第一次使用Visual Studio 2019的详细步骤)
本文会尽量让和笔者一样只有一点点可怜的c语言基础的小白看懂,并写出自己的音乐播放器. 笔者使用的编译器是Visual Studio 2019,直接在官网下载就行了.下面是Visual Studio 2 ...
- c语言如何判断最小公倍数,c语言如何求最大公约数和最小公倍数?
推荐教程:<C视频教程> c语言如何求最大公约数和最小公倍数? c语言求最大公约数和最小公倍数的方法: 求最大公约数算法: 有两整数a和b: ① a%b得余数c ② 若c=0,则b即为两数 ...
- 在虚拟机中,安装Windows10各种语言版本安装详细步骤-举例韩语的ISO安装详细过程
根据之前的文章–VMware16安装Win10系统 执行到这里的步骤之后, (1)找到win10 iso的安装文件"Windows 10 x64.vmx" 删除行: firewar ...
- vc 写c语言程序步骤,VC++ 6.0编写程序的详细步骤
想知道VC++ 6.0工具如何编写程序吗,可能有些朋友还不熟悉,我们一起去了解一下VC++ 6.0编写程序的详细步骤吧. VC++ 6.0编写程序的详细步骤 vc++6.0的菜单简洁,工具明了,这里以 ...
- C语言实验——最小公倍数和最大公约数_JAVA
Description 从键盘输入两个正整数,求这两个正整数的最小公倍数和最大公约数,并输出. Input 输入包括一行. 两个以空格分开的正整数. Output 两个整数的最小公倍数和最大公约数. ...
最新文章
- ML之SVM:利用SVM算法对手写数字图片识别数据集(PCA降维处理)进行预测并评估模型(两种算法)性能
- sqlerver 字符串转整型_mssql sqlerver 脚本 计算数据表的结余数的方法分享
- maven版本控制实战
- usaco1.4.4(milk3)
- 【渝粤教育】电大中专职业健康与安全_1作业 题库
- 质问微软 WP8.1开发HTTPS 真费劲
- 【Java】数据结构——队列(图文)
- 音视频开发(10)---nginx-rtmp视频流服务器搭建
- 更新尺寸调用什么方法_Java 多线程启动为什么调用 start() 方法而不是 run() 方法?...
- ICE Tester method viewer 的安装和使用,和客制化代码配合使用
- 数据结构与算法的实现 —— 结点定义与数据结构的选择
- table列最小宽度 vue_Vue组件设计 - 先别管view
- Linux yum安装java环境
- 计算机组成原理 罗克露 pdf,罗克露计算机组成原理课件(一).pdf
- linux ubuntu版本选择,如何选择一个合适的Ubuntu版本
- vr软件测试,如何进行VR可用性测试?
- One Drive 回收站文件太多时无法清空回收站解决办法
- linux模拟树莓派,使用QEMU模拟树莓派Raspberry Pi
- 【Xgen UE】将Xgen制作好的毛发导入UE
- MyEclipse 优化