Java 数论基础:最大公约数、最小公倍数与素数

发布于 2026-02-05 16:22 132 字 1 min read

hainoir avatar

hainoir

记录前端实践、算法推演和那些值得反复理解的问题。

  1. 至今

    超星

    前端研发工程师

  2. 至

    好未来

    硬件运维工程师

首页 周刊 时间线 关于 歌单
汇总 Java 中最大公约数、最小公倍数、素数判断与素数筛的基础模板,对照递归求 gcd、试除法判断素数和批量预处理素数的实现。

最大公约数 gcd

public static int gcd(int x,int y)
{
    return y==0?x:gcd(y,x%y);
}

最小公倍数 lcm

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

判断素数

public static boolean isPrime2(int n) {
	if (n <= 3) {
		return n > 1;
	}
	int sqrt = (int) Math.sqrt(n);
	for (int i = 2; i <= sqrt; i++) {
		if (n % i == 0) {
			return false;
		}
	}
	return true;
}

素数筛:批量预处理

for(int i = 2;i < v.length;++i) 
		{
			if(v[i] == 0) 
			{
				list.add(i);
				for(int j = i * i;j < v.length;j+=i) 
				{
					v[j] = 1;
				}
			}
		}

本文作者:hainoir · CC BY-NC-SA 4.0

喜欢的话,留下你的评论吧~

评论加载中…

相关文章