⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 15 - generating prime numbers.rb

📁 O Reilly Ruby Cookbook source code
💻 RB
字号:
require 'mathn'primes = Prime.newprimes.succ                                     # => 2primes.succ                                     # => 3#---primes.each { |x| puts x; break if x > 15; }# 5# 7# 11# 13# 17primes.succ                                     # => 19#---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 } if sieve[i]  end  sieve.compactendsieve(10)# => [2, 3, 5, 7]sieve(100000).size# => 9592#---require 'mathn'class Prime  @@primes = [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, 101]  @@check_next = 103#---  # @@primes[3] < sqrt(@@check_next) < @@primes[4]  @@limit = 3  # sqrt(121) == @@primes[4]  @@increment_limit_at = 121#---  def succ    @index += 1    while @index >= @@primes.length      if @@check_next + 4 > @@increment_limit_at        @@limit += 1        @@increment_limit_at = @@primes[@@limit + 1] ** 2      end      add_if_prime      @@check_next += 4      add_if_prime      @@check_next += 2     end    return @@primes[@index]  end#---  def initialize    @index = -1      end#---  :private  def add_if_prime    factor = @@primes[2..@@limit].find { |prime| @@check_next % prime == 0 }    @@primes << @@check_next unless factor  endend#---primes = Prime.newp = nil10000.times { p = primes.succ }p                                             # => 104729#---class Prime  def prime?(n)    succ() while @seed < n    return @primes.member?(n)  endend#---def probably_prime?(x)  x < 8endprobably_prime? 2                          # => trueprobably_prime? 5                          # => trueprobably_prime? 6                          # => trueprobably_prime? 7                          # => trueprobably_prime? 8                          # => falseprobably_prime? 100000                     # => false#---

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -