最大公约数和最小公倍数的数学原理与算法实现

质数、最大公约数和最小公倍数的数学原理与算法实现

最大公约数和最小公倍数的数学原理与算法实现_第1张图片

前言

很多人在学习编程,首先实现的就是质数生成,然后就是最大公约数、最小公倍数的生成。

搞业务开发的程序员,在日后往往以框架学习、项目搭建为主,对底层代码的处理较少,但新手学会这些东西还是能增进对代码的理解的。

质数生成

质数是最简单的代码,这里我们用多个语言实现一下。

先试试 C 语言

int isPrime(int number) {
	int result = 1;
	for (int division = 2; division < number; division++) {
		if (number % division == 0) {
			result = 0;
		}
	}
	return result;
}

再试试 Python

def isPrime(number):
	result = 1
	for division in range(2,division):
		if number % division == 0:
			result = 0;
	return result

我这里没有对 number 进行类型检查、数值范围判断,主要是为了方便演示,有需要的可以自行添加。

其他语言包括 Java、JS、C# 都大同小异。

最大公约数和最小公倍数

约数就是能约分的数,比如 12 12 12 能跟 1 , 2 , 3 , 4 , 6 , 12 1,2,3,4,6,12 1,2,3,4,6,12 约分,那 12 12 12 就有 6 6 6 个约数。因为约分是对称的,所以约数是成对出现的,约数量是偶数。
公约数就是满足多个数能约分,比如 18 18 18 能被 1 , 2 , 3 , 6 , 18 1,2,3,6,18 1,2,3,6,18 约分,那 12 , 18 12,18 12,18 就有 1 , 2 , 3 , 6 1,2,3,6 1,2,3,6 四个公约数,一般最大公约数研究的多。

四种求最大公约数算法_或许没看到的博客-CSDN博客_最大公约数算法
欧几里得算法求最大公约数与最小公倍数(思路很简单)-Dotcpp编程社区

倍数就是若干倍的数,比如 2 2 2 的倍数有 2 , 4 , 6 , 8 , . . . , 2 k , . . . 2,4,6,8,...,2k,... 2,4,6,8,...,2k,...
公倍数就是满足多个数有倍数,比如 3 3 3 的倍数有 3 , 6 , 9 , 12 , . . . , 3 k , . . . 3,6,9,12,...,3k,... 3,6,9,12,...,3k,... 2 2 2 3 3 3 的公倍数有 6 , 12 , 18 , . . . , 6 k , . . . 6,12,18,...,6k,... 6,12,18,...,6k,... ,一般最小公倍数研究较多。

C 语言代码


int gcd(int a, int b)
{
    if(b==0)
        return a;
    return gcd(b, a%b);
}

int lcm(int a, int b)
{
    return a / gcd(a, b) * b;
}


如今看来代码还是有点粗糙,日后有时间会进行更新。

你可能感兴趣的:(算法,数据结构)