pta-最小公倍數,最大公約數


求最小公倍數,最大公約數的兩種常見方法

1.輾轉相除法

又稱為歐幾里德算法(具體...請自查百度)

輾轉相除法的核心就是不斷的讓兩個數做除法運算。其原理基於兩個整數的最大公約數等於其中較小的數和兩數的相除余數的最大公約數。

另z=x%y;

x=y;

y=z;

終止條件是y=0

代碼如下:

#include<stdio.h>
int main()
{
    int x, y, z, n, m, w;
    printf("請輸入兩個數:\n");
    scanf_s("%d %d", &x, &y);
    w = x>y ? x : y;
    if (w = y)
    {
        w = x;
        x = y;
        y = w;
    }
    m = x, n = y;
    while (y)
    {
        z = x%y;
        x = y;
        y = z;
    }
    printf("最大公約數為:%d", x);
    printf("\n最小公倍數為:%d\n", m*n / x);
    system("pause");
}

2.窮舉法

這個算法的時間復雜度較高,建議使用上邊的第一種方法

#include<stdio.h>
int main()
{
    int x,y,i,j,n,m;
    printf("請輸入兩個數:\n");
    scanf("%d %d",&x,&y);
    m=x,n=y;
    for(i=1;i<=x;i++)
    {
        if(x%i==0&&y%i==0)
        {
            break;
        }
    }
    for(i=x;i>0;i--)
    {
        if(x%i==0&&y%i==0)
        {
            break;
        }        
    }
    printf("最大公倍數:%d\n",i);
    printf("最小公約數:%d\n",m*n/i);
    system("pause");
    return 0;
}

 


免責聲明!

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



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