最大公約數的計算


定義:

最大公因數,也稱最大公約數、最大公因子,指兩個或多個整數共有約數中最大的一個。簡單概況就是兩個數或多個數能被取余為0的最大的數字。

 

先簡單來算兩個數的最大公約數

C語言:

兩種方法:(1)枚舉法   (2)輾轉相除法

 

/*
 * 利用枚舉法求出兩個數的最大公約數
 * 思想:先找出兩個數的最小值,因為兩數的最大公約數一定要比兩數的最小值還要小,所以先求出兩數的最小值
 * 在和兩個數同時取余,若和兩個數同時取余都為0,那么在當前階段它就是最大公約數,直到for循環結束,即是兩個數的最大公約數
 */
#include <stdio.h>
int main()
{
    int a,b;
    int min;
    scanf("%d %d",&a,&b);
    if(a<b)
    {
        min=a;
    }
    else
    {
        min=b;
    }
    int gcd = 0;
    int i;
    for(i = 1;i < min; i++)
    {
        if(a % i == 0&& b % i == 0)
            gcd = i;
    }
    printf("%d 和 %d 的最大公約數是 %d\n",a,b,gcd);
}





/*
 * 利用輾轉相除法求最大公約數
 * 舉例:
 * a    b   t(a%b)
 * 12   18  12
 * 18   12  6
 * 12   6   0
 * 6    0
 * 如上述所示當b為0時,計算結束,a就是最大公約數
 * 否則,計算a%b,讓a = b,b = a%b
 * 回到第一步
 */
#include <stdio.h>
int main()
{
    int a,b;
    int t;
    scanf("%d %d",&a,&b);
    while (b != 0)
    {
        t = a % b;
        a = b;
        b = t;
    }
    printf("gcd = %d\n",a);
}

 

C++:

 

兩種方法:(1)algorithm(算法)庫  (2)遞歸法

 

/*
 * 利用algorithm算法庫直接算出
 */
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a<<""<<b<<" 的最大公約數為 "<<__gcd(a,b);
}



/*
 * 利用遞歸法計算a,b的最大公約數
 * 思想:先判斷a%b是否為0,如果為零那么執行gcd,否則直接返回b
 */
#include <iostream>
using namespace std;
int gcd(int a,int b)
{
    return a%b?gcd(b,a%b):b;
}
int main()
{
    int a,b;
    cin>>a>>b;
    cout<<a<<""<<b<<" 的最大公約數為 "<<gcd(a,b);
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM