Ruby-寻找100以下的素数?
我想写一个代码,打印出100以下的所有素数。这是我到目前为止的代码Ruby-寻找100以下的素数?,ruby,methods,primes,Ruby,Methods,Primes,我想写一个代码,打印出100以下的所有素数。这是我到目前为止的代码 class Numbers def is_a_prime?(int) x = 2 while x < int/2 if int % x == 0 return false else return true end end end def primes_under_100 x = 2 while x &
class Numbers
def is_a_prime?(int)
x = 2
while x < int/2
if int % x == 0
return false
else
return true
end
end
end
def primes_under_100
x = 2
while x < 100
print x if is_a_prime?(x) # calling the method I defined above
x+= 1
end
end
end
我想知道我哪里出错了。我的方法都不是私有的。非常感谢您的帮助。您怎么称呼它?它们是
Number
类的公共方法,所以要调用它们,您需要实例化Number
类的对象:
number = Numbers.new
primes = number.primes_under_100
另外,正如Leo Correa在我的回答中所说的那样,方法是a\u prime?
不能这样调用,您应该使用:
print x if is_a_prime?(x)
为了使代码正常工作,您需要进行以下修改
class Numbers
def is_a_prime?(int)
x = 2
while x < int/2
if int % x == 0
return false
else
return true
end
end
end
def primes_under_100
x = 2
while x < 100
# Notice you're calling is_a_prime? on the instance of the Numbers object
# and sending x as an argument. Not calling is_a_prime? on the 'x'
print x if is_a_prime?(x)
x+= 1
end
end
end
类号
def是素数?(int)
x=2
而x
然后调用\u 100下的
Numbers.new.primes\u
另一种方法是扩展Fixnum。这样,您应该能够在int值上调用它
应该是这样的
class Fixnum
def is_a_prime?
(2..(self/2)).each do |x|
if self % x == 0
return false
end
end
return true
end
end
我不知道哪个版本的Ruby包含这个方法,但是如果你使用2.2或更高版本,你可以这样做 将其添加到文件的顶部
需要“prime”
以及显示特定数目下的素数的方法
Prime.每(100)个都做| Prime|
p素数#=>2,3,5,7,11,…,97
结束
你怎么称呼这个
Numbers.new.primes\u在\u 100下
调用Numbers时,您的代码将中断。new.primes\u在\u 100下
因为您试图调用是a\u prime吗?
在Fixnum
上的Numbers
对象上的如果x是a\u prime?,请打印x调用我在上面定义的方法
我调用了\u 100下的primes\u仅供参考,Ruby还有一个类可用于生成/检查素数。请确保首先需要'prime'
。此外,还必须对FixNum调用此方法,因为素数是正整数。类被称为数字
而不是数字
。另外,他的代码将中断,因为他试图在一个Fixnum
实例而不是numes
上调用is a\u prime?(int)
,我了解到,只需声明一个方法的名称,就可以调用一个没有参数的方法。如果它有参数,则使用括号内的参数调用该方法。为了调用它,我只需键入方法名“primes\u under_100”。我知道代码正在通过Numbers类实例化一个新对象。但是你能解释一下为什么我需要创建一个新对象来调用函数吗?@user3662249,因为你的代码是作为实例方法编写的。它们只能在Numbers类的一个实例上调用,而不能在类本身上调用。你是否应该在is_a_prime?()?+1中增加x以获得修补Fixnum的想法,这就是我要建议的。我认为在核心类中修补是ruby做事情的方式:DTotally!好的,这可能是一个糟糕/糟糕的计划,对于那些可能期望核心类按照其编写方式工作的严肃项目来说,但是对于一个简单的脚本来说,它可以很好(IMHO)。
class Fixnum
def is_a_prime?
(2..(self/2)).each do |x|
if self % x == 0
return false
end
end
return true
end
end