zoukankan      html  css  js  c++  java
  • 公约数和公倍数

    求最小公倍数算法

    最小公倍数=两整数的乘积÷最大公约数

    求最大公约数算法

    (1)辗转相除法

    有两整数ab

    ① a%b得余数c

    ② c=0,则b即为两数的最大公约数

    ③ 若c≠0,则a=bb=c,再回去执行①

    /*
    求最小公倍数算法:
    
    最小公倍数=两整数的乘积÷最大公约数
    求最大公约数算法:
    (1)辗转相除法
    有两整数a和b:
    ① a%b得余数c
    ② 若c=0,则b即为两数的最大公约数
    ③ 若c≠0,则a=b,b=c,再回去执行①
    */
    
    #include <stdio.h>
    
    int common_divisor_func(int num1, int num2);
    
    int main()
    {
        int n;
        int num1, num2;
        int common_divisor, common_multiple;
        scanf("%d", &n);
        while(n--)
        {
            scanf("%d%d", &num1, &num2);
            common_divisor = common_divisor_func(num1, num2);
            common_multiple = num1 * num2 / common_divisor;
            printf("%d %d
    ", common_divisor, common_multiple);
        }
        getchar();
        return 0;
    }
    
    int common_divisor_func(int num1, int num2)
    {
        int c;
        int tmp;
        c = num1 % num2;
        while(num2 != 0)
        {
            c = num1 % num2;
            num1 = num2;
            num2 = c;
        }
    
        return num1;
    }
    //比较递归计算最小公倍数
    //注意必须a > b
    
    int gcd(int a, int b)
    {
        if(b == 0)
        {
            return a;
        }
        else
        {
            return gcd(b, a % b);
        }
    }

    这个算法看起来其实并不是很难,但是到了实际应用的时候可能要考虑很多的东西,比如两个很大的数的最小公倍数有可能已经超出了int的范围了,这个时候就要使用long long或者__int了

    还有那个

    common_multiple = num1 * num2 / common_divisor;

    有的时候可以先除后乘。



    计算一个数的所有的约数
    int arr[100];
    int i;
    for(i = 0;i * i < sqrt(num);i++)
    {
        if(num % i == 0)
        {
            arr[top++] = i;
            srr[top++] = num / i;
        }
    }


  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/virusdefender/p/3384895.html
Copyright © 2011-2022 走看看