2013-10-08 29 views
0

我试图查看用户是否输入质数。我希望它打印的“黄金”或“不是素数”到屏幕:红宝石将不会打印输出

prime = "" 
puts "TYPE IN A NUMBER TO SEE IF IT'S PRIME: " 
gets.chomp(prime).to_i 
for divide_by in 2..(prime.to_i - 1) 
    if prime % divide_by == 0 
     puts "NOT PRIME!!!" 
else 
    puts "PRIME!!!" 
end 
end 

我应该使用while循环呢?

回答

0

你的gets.chomp(prime).to_i没有做任何重要的事情。我不明白chomp这里的目的,它不分配任何变量。如果您想接收输入号码为prime,则需要执行prime = gets.to_i

一旦你这样做了,你不需要再像for divide_by in 2..(prime.to_i - 1)那样再做to_i

此外,你的逻辑是有缺陷的。如果prime不能被2整除,是否足以说明"PRIME!!"?我不这么认为。

如果你想知道使用什么类型的循环,该循环for很少有用。您应该使用each

+0

是的,但我怎么做,然后用数字的东西吗?我是否把它放在同一个循环中? –

+0

把什么放在同一个循环中? – sawa

+0

“如果黄金不能被2整除,这就够了说‘PRIME!’?” 我知道。我试图通过1和总理之间的任意数字说,这还不包括1 我会尝试用每一个循环做到这一点。 –