显示用户提示的数字的因数

Displaying factors of a number prompted by a user

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

我成功地创建了程序的第一部分,但我在最后一部分遇到困难。

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

如有任何帮助或建议,我们将不胜感激!

试试这个代码:

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