1. 程式人生 > >最大公約數最小公倍數

最大公約數最小公倍數

小明被一個問題給難住了,現在需要你幫幫忙。問題是:給出兩個正整數,求出它們的最大公約數和最小公倍數

分析:利用輾轉相除法求出最大公約數

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

假設兩數為 x,y。

先令 z = x % y ;

之後 y 賦給 x 即令  x = y ;

再將 z 賦給 y 即令  y = z;

輾轉相減,其終止條件為:y 等於0時。 

而最小公倍數就等於兩個正整數的積除以最大公約數

程式碼:

01. #include <iostream>
02. #include<stdio.h> 03. using namespace std; 04. int main() 05. { 06.     int a,b,c,d; 07.     int i,j,k; 08.     scanf("%d",&a); 09.     while(a--) 10.
    { 11.         scanf("%d %d",&b,&c); 12.         i=b;j=c; 13.         while(c!=0) 14.         
{
15.             d=b%c; 16.             b=c; 17.             c=d; 18.         } 19.         k=i*j/b; 20.         printf("%d %d\n",b,k); 21.     } 22.     return 0; 23. }