蓝桥杯系统练习合集Java/C++版持续更新中 点击进入
原文链接:https://blog.csdn.net/special_hg/article/details/52450073
最大公约数:
如果有一个自然数a能被自然数b整除,则称a为b的倍数,b为a的约数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个公约数,称为这几个自然数的最大公约数。
这个有几种方法,下面是两种不错的方法:
(1)求差判定法.
如果两个数相差不大,可以用大数减去小数,所得的差与小数的最大公约数就是原来两个数的最大公约数.例如:求78和60的最大公约数.78-60=18,18和60的最大公约数是6,所以78和60的最大公约数是6.
如果两个数相差较大,可以用大数减去小数的若干倍,一直减到差比小数小为止,差和小数的最大公约数就是原来两数的最大公约数.例如:求92和16的最大公约数.92-16=76,76-16=60,60-16=44,44-16=28,28-16=12,12和16的最大公约数是4,所以92和16的最大公约数就是4.
(2)辗转相除法.
当两个数都较大时,采用辗转相除法比较方便.其方法是:
以小数除大数,如果能整除,那么小数就是所求的最大公约数.否则就用余数来除刚才的除数;再用这新除法的余数去除刚才的余数.依此类推,直到一个除法能够整除,这时作为除数的数就是所求的最大公约数.
最小公倍数:
借助最大公约数求最小公倍数
步骤:
一、利用辗除法或其它方法求得最大公约数
二、 最小公倍数等于两数之积除以最大公约数。
举例:12和8的最大公约数为4
12×8/4=24
两数的最小公倍数是24。
#include<iostream>
#include<time.h>
using namespace std;
int main(){
int a, b, c, tem;
cout << "请输入两个整整数:" << endl;
cin >> a >> b;//输入两个整数求最大公约数
int x = a;//将最初的m和n的值分别用x和y保存起来,后面计算最小公倍数时需要用到
int y = b;
if (a>b){
tem = a;
a = b;
b = tem;
}
while (a%b != 0){//辗转相除法
c = a%b;
a = b;
b = c;
}
cout << "最大公约数:" << b<<endl;
cout << "最小公倍数:" << x*y/b << endl;
}
————————————————
版权声明:本文为CSDN博主「special_hg」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/special_hg/article/details/52450073