素数筛
使用埃拉托斯特尼筛法找出给定范围内的所有素数。在网格中可视化素数。
25
找到的素数
99
检查的数字
25.3%
素数密度
数字网格(素数高亮)
23456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
高亮 = 素数
素数
2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97
关于此工具
质数筛(Prime Sieve)是一种数学算法,能够高效地找到指定上限以内的所有质数。埃拉托斯特尼筛法距今已有两千多年的历史,仍然是生成质数列表最快的方法之一,广泛应用于密码学、数论研究和教育领域。此工具将这个经典算法带到您的浏览器中,让您能够以交互方式探索质数的分布和性质。
要使用此工具,请输入搜索范围的上限,然后点击"查找质数"。该工具将立即以网格格式显示所有不超过该上限的质数,使您可以轻松可视化它们的频率和规律。常见的应用场景包括验证教育项目中的质数、为加密算法生成质数、研究相邻质数之间的间隔,以及探索关于质数分布的数学奥秘。
埃拉托斯特尼筛法通过迭代地将每个质数的倍数标记为合数,从而只留下质数。这种方法比逐个检查每个数是否整除要快得多。对于不超过一百万的上限,计算几乎瞬间完成;对于更大的上限,根据您的设备性能可能需要几秒钟。该工具非常适合学生、数学家以及任何对数论基础知识感兴趣的人使用。
常见问题
代码实现
def sieve_of_eratosthenes(limit: int) -> list[int]:
"""Return list of all primes up to limit."""
if limit < 2:
return []
is_prime = [True] * (limit + 1)
is_prime[0] = is_prime[1] = False
i = 2
while i * i <= limit:
if is_prime[i]:
for j in range(i * i, limit + 1, i):
is_prime[j] = False
i += 1
return [n for n, p in enumerate(is_prime) if p]
primes = sieve_of_eratosthenes(100)
print(primes)
# [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, ...]
print(f"Count: {len(primes)}") # Count: 25Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.