游客 Signup | Login
中文 | En

2179 - 求lcm和gcd

给定两个数求最小公倍数和最大公约数。

Input

输入包含多组样例

每行包括两个整数a,b(0<a ,b<=10000);        

Output

每行两个数输出两个数,第一个数是最小公倍数,第二个最大公约数

Examples

Input

2 3

Output

6 1

Solution C

#include<stdio.h>
main()
{
 int a,b,num1,num2,temp;
 
 while(scanf("%d %d",&num1,&num2)!=EOF)
 {
 
 if(num1<num2)  
 { temp=num1;
  num1=num2; 
  num2=temp;
 }
a=num1;b=num2;
while(b!=0)/*利用辗除法,直到b为0为止*/
 {
  temp=a%b;
  a=b;
  b=temp;
 }
 printf("%d",num1*num2/a);
printf(" %d",a);

printf("\n");
}
}

Solution C++

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
#include <string>

using namespace std;

int gcd(int a, int b) {
  if (b != 0)
    return gcd(b, a % b);
  else
    return a;
}

int main() {
  //freopen("Problem8.in", "r", stdin);
  //freopen("Problem8.out", "w", stdout);

  int a, b;
  while (scanf("%d %d", &a, &b) != EOF) {
    int c = gcd(a, b);
    printf("%d %d\n", a * b / c, c);
  }

  return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题