如何生成前 n 个素数? [英] How do I generate the first n prime numbers?
问题描述
我正在学习 Ruby 并做一些数学方面的工作.我想做的一件事就是生成素数.
I am learning Ruby and doing some math stuff. One of the things I want to do is generate prime numbers.
我想生成前十个素数,只生成前十个.我可以测试一个数字以查看它是否是质数,但想知道生成这些数字的最佳方法是什么?
I want to generate the first ten prime numbers and the first ten only. I have no problem testing a number to see if it is a prime number or not, but was wondering what the best way is to do generate these numbers?
我正在使用以下方法来确定数字是否为质数:
I am using the following method to determine if the number is prime:
class Integer < Numeric
def is_prime?
return false if self <= 1
2.upto(Math.sqrt(self).to_i) do |x|
return false if self%x == 0
end
true
end
end
推荐答案
在 Ruby 1.9 中,有一个 Prime 类可以用来生成素数,或测试一个数是否为素数:
In Ruby 1.9 there is a Prime class you can use to generate prime numbers, or to test if a number is prime:
require 'prime'
Prime.take(10) #=> [2, 3, 5, 7, 11, 13, 17, 19, 23, 29]
Prime.take_while {|p| p < 10 } #=> [2, 3, 5, 7]
Prime.prime?(19) #=> true
Prime 实现了 each
方法并包含 Enumerable 模块,因此您可以执行各种有趣的事情,例如过滤、映射等.
Prime implements the each
method and includes the Enumerable module, so you can do all sorts of fun stuff like filtering, mapping, and so on.
这篇关于如何生成前 n 个素数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!