• 最大公约数


    前言

    写写最大公约数

    正文

    几个概念:

    辗转相除法,欧几里得算法。

    两个正整数a 和 b (a>b),它们的最大公约数等于a处于b的余数c和b直接的最大公约数。

    public static int generateGreatestCommonDivisor(int a,int b)
    {
    	var max=a>b?a: b;
    	var min = a > b ? b : a;
    	if (max % min == 0)
    	{
    		return min;
    	}
    	else
    	{
    		var yu = max % min;
    
    		return generateGreatestCommonDivisor(min, yu);
    	}
    }
    

    更相减损数

    两个正整数a和 b(a>b),它们的最大公约数等于a-b的差值c与b的最大公约数

    public static int generateGreatestCommonDivisor(int a, int b)
    {
    	if (a == b)
    	{
    		return a;
    	}
    	var max = a > b ? a : b;
    	var min = a > b ? b : a;
       return  generateGreatestCommonDivisor(min,max-min);
    }
    

    两者结合

    public static int generateGreatestCommonDivisor(int a, int b)
    {
    	if (a == b)
    	{
    		return a;
    	}
    	if (((a & 1) == 0 && (b & 1) == 0))
    	{
    		return generateGreatestCommonDivisor(a >> 1, b >> 1) << 1;
    	}
    	else if (((a & 1) == 0 && (b & 1) != 0))
    	{
    		return generateGreatestCommonDivisor(a >> 1, b);
    	}
    	else if (((a & 1) != 0 && (b & 1) == 0))
    	{
    		return generateGreatestCommonDivisor(a >> 1, b);
    	}
    	else
    	{
    		int big = a > b ? a : b;
    		var small = a > b ? b : a;
    		return generateGreatestCommonDivisor(big-small,small);
    	}
    }
    

    总结

    数学博大精深!

  • 相关阅读:
    不要随便用#define 沉沉_
    转载堆和栈的区别 沉沉_
    转载include包含源文件引发的错误 沉沉_
    浅议C和C++中的内存分配 沉沉_
    volatile 的应用 沉沉_
    Debian显示txt乱码
    Debian 64位安装wink
    Debian安装vmware虚拟机
    Debian安装scim中文、日语输入法
    Debian安装chrome
  • 原文地址:https://www.cnblogs.com/aoximin/p/12504009.html
Copyright © 2020-2023  润新知