编程中的数字与时间处理
1. 生成质数
1.1 问题与解决方案
在编程中,有时需要生成质数序列或找出特定阈值以下的所有质数。可以通过实例化 Prime 类来创建一个质数生成器,使用 Prime#succ 方法获取序列中的下一个质数。
require 'mathn'
primes = Prime.new
puts primes.succ # => 2
puts primes.succ # => 3
也可以使用 Prime#each 方法迭代质数:
primes.each { |x| puts x; break if x > 15; }
# 5
# 7
# 11
# 13
# 17
puts primes.succ # => 19
1.2 埃拉托斯特尼筛法
埃拉托斯特尼筛法是一种著名的质数算法,它通过多次迭代一个范围来找出该范围内的所有质数。以下是其实现代码:
def sieve(max=100)
sieve = []
(2..max).each { |i| sieve[i] = i }
(2..Math.sqrt(max)).each do |i|
(i*i).step(max, i) { |j| sieve[j] = nil }
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



