最大公约数,最小公倍数

一、最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。ab的最大公约数记为(a,b),同样的,a,b,c的最大公约数记为(a,b,c),多个整数的最大公约数也有同样的记号。求最大公约数有多种方法,常见的有质因数分解法、短除法辗转相除法更相减损法。与最大公约数相对应的概念是最小公倍数,a,b的最小公倍数记为[a,b]。

二、求法:

1.质因数分解法

质因数分解法:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的 最大公约数例如:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,所以,(24、60)=12
把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数例如:求6和15的最小公倍数。先分解质因数,得6=2×3,15=3×5,6和15的全部公有的质因数是3,6独有质因数是2,15独有的质因数是5,2×3×5=30,30里面包含6的全部质因数2和3,还包含了15的全部质因数3和5,且30是6和15的公倍数中最小的一个,所以[6,15]=30。若求出两个数的最大公约数,用两个数的乘积除以他们的最大公约数就能得到最小公倍数。6=2*3,15=3*5.所有质因数是2,3和3,5,其中最大公约数是3,最小公倍数是2*3*5=30;(2*3)*(3*5)/3=(6*15)/3=30
分解质因数的代码
#include<iostream>
using namespace std;

int main()
{   
    int n,n2,i;
    cin>>n;
    n2=n;
    cout<<n<<"=";
    for( i=2; i<n; i++)
    {
        if(n%i==0)
        {
            n = n/i;
            n2=n;
            cout<<i<<"*";
            i=1;
        }
    }
    cout<<n2<<endl;
    return 0;
}
2. 辗转相除法
辗转相除法是求两个自然数的最大公约数的一种方法,也叫 欧几里德算法
这就是辗转相除法的原理。
例如,求(319,377):
∵ 319÷377=0(余319)
∴(319,377)=(377,319);
∵ 377÷319=1(余58)
∴(377,319)=(319,58);
∵ 319÷58=5(余29),
∴ (319,58)=(58,29);
∵ 58÷29=2(余0),
∴ (58,29)= 29;
∴ (319,377)=29.
为什么这样求出是就是最大公约数呢?下面对a,b为正整数(a>b)的情形给出说明。
根据定理10.2,商q和余r数满足a=bq+r,且0≤r ≤b-1. 若r=0,显然(a,b)=b;若r≠0,由于a=bq+r,每个能整除b,r的整数都能整除a,当然能同时整除a,b,所以(b,r)|(a,b);另一方面,r=a-bq,每个能整除a,b的整数都能整除r, 当然能同时整除b,r, 所以(a,b)|(b,r).因此(a,b)=(b,r). 
辗转相除法的代码:
#include<iostream>
using namespace std;
int main()
{
    int a,b;
    cin>>a;
    cin>>b;
    cout<<a<<"和"<<b<<"的"<<endl;
    int temp = a*b;
    int r;
    if(a<b)
    {
        a = a+b;
        b = a-b;
        a = a-b;
    }
    while(b!=0)
    {
        r = a%b;
        a=b;
        b=r;
    }
    cout<<"最大公约数:"<<a<<endl;
    cout<<"最小公倍数:"<<temp/a<<endl;
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值