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 }
    
    
    
    
    
  • 相关阅读:
    C# 异步编程 (12)
    C# 动态语言扩展(11)
    C# LINQ(10)
    代码整洁之道(1)
    C# 集合(9) 持续更新
    C# 字符串和正则表达式(8) 持续更新
    C# 委托、lambda表达式和事件 (7) 持续更新
    C# 运算符和类型强制转换(6) 持续更新
    C++_将图二维矩阵形式转为邻接表结构
    .NET(C#)连接各类数据库-集锦
  • 原文地址:https://www.cnblogs.com/GetcharZp/p/9074364.html
Copyright © 2011-2022 走看看