当前位置:网站首页>DAY-1 | 求两个正整数的最大公约数与最小公倍数之和——辗转相除法
DAY-1 | 求两个正整数的最大公约数与最小公倍数之和——辗转相除法
2022-08-02 03:14:00 【碳基肥宅】
这里是C语言刷题日志,整理了博主本人平时做练习遇到的问题以及相关的总结。
目录
一、题干
牛客网链接

二、题解
1. 辗转相除法
//辗转相除法求最大公约数、最小公倍数
int main()
{
long long n = 0;
long long m = 0;
//输入两个数
scanf("%lld %lld", &n, &m);
/*因为求最大公约数和最小公倍数都需要用到m、n,且辗转相除的过程会改编n、m的值,
故再创建两个变量n2、m2,把m和n的值拷贝一份再做运算*/
long long m2 = m;
long long n2 = n;
long long r = 0;
//最大公约数
while (r = n2 % m2)
{
n2 = m2;
m2 = r; //注意:m2才是所求的最大公约数的结果,而不是r
}
//最小公倍数 == m*n/最大公约数
printf("%lld", m * n / m2 + m2); //直接求最大公约数和最小公倍数的和
return 0;
}优点:效率更高;不用比较m和n的大小即可计算。
2. 试除法
int main()
{
int n = 0;
int m = 0;
scanf("%d %d", &n ,&m);
int max = (n>m?m:n);//假设最大公约数,是n和m的较小值
while(1)
{
if(n%max==0 && m%max==0)
{
break;
}
max--;
}
int min = (n>m?n:m);//假设最小公倍数,是n和m的较大值
while(1)
{
if(min%n==0 && min%m==0)
break;
min++;
}
printf("%d\n", max+min);
return 0;
}三、总结
1. 辗转相除法求最大公约数和最小公倍数
//辗转相除法求最大公约数和最小公倍数
int main(){
int m,n;
int tmp = 0;
scanf("%d %d",m,n);
int m2 = m;
int n2 = n;
while(tmp = m % n){
m = n;
n = tmp;
}
printf("%d",n); //注意,最后的n才是要求的最大公约数
printf("%d",(m2*m1)/n);
}最小公倍数 == 两数相乘再除以其最大公约数。
2. 迭乘法求最小公倍数
int main(){
int a=0;
int b=0;
cin >> a >> b;
int i = 1;
while((a*b) % b != 0){
i++;
}
cout << i*a; //最小公倍数:i*a
return 0;
}
边栏推荐
猜你喜欢

5. Hezhou Air32F103_LCD_key

MySQL8.0.26 installation and configuration tutorial (windows 64-bit)

【遥控器开发基础教程3】疯壳·开源编队无人机-ADC(摇杆控制)

Go语学习笔记 - gorm使用 - 原生sql、命名参数、Rows、ToSQL Web框架Gin(九)

Istio微服务治理网格的全方面可视化监控(微服务架构展示、资源监控、流量监控、链路监控)

ModuleNotFoundError: No module named ‘openpyxl‘

第二章——堆栈、队列

Small program (necessary common sense for development) 1

MySQL8.0.28 installation tutorial

ROS2自学笔记:launch文件完整编写流程
随机推荐
支付通道对接常见的问题有哪些?
暴力破解全攻略
OD-Model【4】:SSD
centos安装mysql8
(转帖)HashCode总结(2)
JDBC--Druid数据库连接池以及Template基本用法
(转帖)hashcode和equals的关系
线性代数学习笔记3-2:矩阵乘法的理解
2W字!详解20道Redis经典面试题!(珍藏版)
Ribbon本地实现负载均衡
HCIP第十一天_MPLS实验
MySQL8--Windows下使用msi(图形界面)安装的方法
嘉为蓝鲸携手东风集团、上汽零束再获信通院四项大奖
OD-Model [4]: SSD
(forwarded) HashCode summary (2)
Keil开发环境安装教程
Reasons and solutions for Invalid bound statement (not found)
消息队列经典十连问
2022.7.30 js笔记 运算符和流程控制符、循环
考虑饱和的多智能体系统数据驱动双向一致性
https://www.nowcoder.com/practice/da13e0cf321e4df9acd0fdf0a433cbb0?tpId=107&&tqId=33396&rp=1&ru=/ta/beginner-programmers&qru=/ta/beginner-programmers/question-ranking