质数、最大公约数和最小公倍数的数学原理与算法实现
前言
很多人在学习编程,首先实现的就是质数生成,然后就是最大公约数、最小公倍数的生成。
搞业务开发的程序员,在日后往往以框架学习、项目搭建为主,对底层代码的处理较少,但新手学会这些东西还是能增进对代码的理解的。
质数生成
质数是最简单的代码,这里我们用多个语言实现一下。
先试试 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;
}
如今看来代码还是有点粗糙,日后有时间会进行更新。