显示用户提示的数字因子

时间:2017-03-03 08:06:43

标签: ruby factors

我正在尝试创建一个程序,提示用户输入一个数字,然后检查它是否为素数。我也试图让它显示因素,如果它不是素数。

我设法创建了该程序的第一部分,但我正在努力完成最后一部分。

def prime(n)
 is_prime = true
  for i in 2..n-1
   if n % i == 0
   is_prime = false
end
 end

if is_prime
 puts "#{n} is a prime number"
else
 puts "#{n} is not a prime number =>" 

end
 end


prime(n)

在此步骤:

puts "#{n} is not a prime number =>" 

我想要合并因素的显示,让我们说这个数字是8

8不是素数=> 1,2,4,8

非常感谢任何帮助或建议!

1 个答案:

答案 0 :(得分:1)

试试这段代码:

def factors(n)
  (1..n/2).select{|e| (n%e).zero?}.push(n)
end

因素(8)=> [1,2,4,8]

,您的最后一步将显示为:

puts "#{n} is not a prime number =>#{factors(n).join(',')}" 

顺便说一下:检查数字是否为素数,建议使用Sieve of Eratosthenes