タイトル説明
与えられた2つの正の整数で、xおよびyは、二つの整数Nの最大公約数と最小公倍数を見つけます。
要件は、次のインターフェイスを使用します(数え間違っになります要件を満たしていない、別の関数GCDとLCMを記述することはできません)。
INT get_gcdANDlcm(int型のx、int型Y、INT * lcmptr)。
関数は最大公約数を返し、lcmptrは、オブジェクトストレージの最小公倍数を指す必要があります。
エントリー
入力データの複数のセットを含みます。
データの各セットはスペースで2つの正の整数xおよびy成分を分離しました。x及びyはより4,000以下です。
輸出
各入力、出力およびその最大公約数の最小公倍数のために、実施例を参照してください。
サンプル入力のコピー
3 6
4 8
サンプル出力のコピー
GCD = 3、LCM = 6
GCD = 4、LCM = 8
コード
#include <stdio.h>
#include<math.h>
int get_gcdANDlcm(int x, int y, int *lcmptr)
{
int arr[2];
int t;
arr[1]=x*y;
if(x>y)
{
t=y;y=x;x=t;
}
while(x)
{
if(y%x==0)
{
arr[0]=x;
break;
}
t=y;
y=x;
x=t%x;
}
int q;
arr[1]=arr[1]/arr[0];
q=arr[0];
return q;
}
int main()
{
int x,g,y,a[2]={'\0'};
while(scanf("%d %d",&x,&y)!=EOF)
{
g=get_gcdANDlcm(x,y,a);
printf("GCD=%d,LCM=%d\n",g,x*y/g);
}
return 0;
}