zoukankan      html  css  js  c++  java
  • 12-语言入门-12-公约数和公倍数

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

    输入
    第一行输入一个整数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
     
     
    代码:

    #include <stdio.h>

    //计算a和b的最小公倍数
    static int calCommonMultiple(int a,int b,int maxCommonDivisor);
    //计算a和b的最大公约数
    static int calCommonDivisor(int a,int b);

    int main()
    {
         int readLen = 0;
         scanf("%d",&readLen);
         getchar();
        
         while(readLen > 0)
         {
              int a = 0;
              int b = 0;
              scanf("%d %d",&a,&b);
              getchar();
             
              int divisorNum = calCommonDivisor(a,b);
              int multipleNum = calCommonMultiple(a,b,divisorNum);
             
              printf("%d %d ",divisorNum,multipleNum);
             
              --readLen;
         }
        
         return 0;
    }

    //计算a和b的最小公倍数
    static int calCommonMultiple(int a,int b,int maxCommonDivisor)
    {
         return a*b/maxCommonDivisor;
    }

    //计算a和b的最大公约数
    static int calCommonDivisor(int a,int b)
    {
         int maxNum = a>b?a:b;
         int minNum = a<b?a:b;
        
         int midResult = maxNum % minNum;
         while(midResult != 0)
         {
              maxNum = minNum;
              minNum = midResult;
              midResult = maxNum % minNum;
         }
        
         return minNum;
    }        
     
     
    总结:
    用到了辗转相除法。
    数学还是很重要的,尤其感觉在计算机图形学和工程类软件中的重要性。
     
  • 相关阅读:
    [Design]设计模式结构模式
    [Design] 设计模式行为模式
    [Design] Decorator Pattern
    ILIST<T>和LIST<T> 枫
    js 如何调用Windows自带的配色控件 枫
    WML语法全接触 WAP建站语言 枫
    Asp.net模板引擎技术 枫
    smarty内建函数 枫
    NameValueCollection详解 枫
    smarty循环调用问题 枫
  • 原文地址:https://www.cnblogs.com/sharpfeng/p/5141702.html
Copyright © 2011-2022 走看看