zoukankan      html  css  js  c++  java
  • nyoj 40-公约数和公倍数(gcd)

    40-公约数和公倍数


    内存限制:64MB 时间限制:1000ms Special Judge: No
    accepted:30 submit:47

    题目描述:

    小明被一个问题给难住了,现在需要你帮帮忙。问题是:给出两个正整数,求出它们的最大公约数和最小公倍数。

    输入描述:

    第一行输入一个整数n(0<n<=10000),表示有n组测试数据;
    随后的n行输入两个整数i,j(0<i,j<=32767)。

    输出描述:

    输出每组测试数据的最大公约数和最小公倍数

    样例输入:

    3
    6 6
    12 11
    33 22
    

    样例输出:

    6 6
    1 132
    11 66

    分析:
      ①、求最大公约数可以用递归的方法(gcd);
      
    1 int gcd(int a, int b)
    2 {
    3     if(b == 0) return a;
    4     return gcd(b, a%b);
    5 }

      ②、最大公约数和最小公倍数相乘即就是对应的两个数直接相乘

      ③、最小公倍数 = a*b / gcd(a, b)


    C/C++代码实现(AC):
      
     1 #include <iostream>
     2 #include <algorithm>
     3 #include <cstring>
     4 #include <cstdio>
     5 #include <cmath>
     6 #include <stack>
     7 #include <map>
     8 #include <queue>
     9 #include <set>
    10 
    11 using namespace std;
    12 const int MAXN = 510;
    13 
    14 int gcd(int x, int y)
    15 {
    16     if(y == 0) return x;
    17     return gcd(y, x%y);
    18 }
    19 
    20 int main()
    21 {
    22 
    23     int t;
    24     scanf("%d", &t);
    25     while(t --)
    26     {
    27         int a, b, temp;
    28         scanf("%d%d", &a, &b);
    29         temp = gcd(a, b);
    30         printf("%d %d
    ", temp, a*b/temp);
    31     }
    32 
    33     return 0;
    34 }
    
    
    
    
    
  • 相关阅读:
    EEPlat 的 后台业务处理模型
    poj 1012 Joseph (约瑟夫问题)
    python使用正則表達式
    二维码_encode与decode
    UITableView显示不全
    Bottle 中文文档
    不相交集python实现
    面试题1:落单的数
    Android开发/源代码资源汇总
    leetCode 26.Remove Duplicates from Sorted Array(删除数组反复点) 解题思路和方法
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9074364.html
Copyright © 2011-2022 走看看