我正在尝试创建一个程序,提示用户输入一个数字,然后检查它是否为素数。我也试图让它显示因素,如果它不是素数。
我设法创建了该程序的第一部分,但我正在努力完成最后一部分。
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
非常感谢任何帮助或建议!
答案 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。