Ruby 显示用户提示的数字的系数
我试图创建一个程序,提示用户输入一个数字,然后检查它是否是素数。我还试图让它显示因子,如果它不是素数的话 我成功地创建了程序的第一部分,但我正在努力完成最后一部分Ruby 显示用户提示的数字的系数,ruby,factors,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 prim
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(',')}"
顺便说一下:要检查数字是否为素数,建议使用。您可以将因子查找代码的速度提高100%。您只需检查前半部分(
c/2
)编号。后半部分永远不会产生因子(除了c
本身),也可以使用select
而不是map+compact
。看起来会干净得多。嗨,这很有效,谢谢!但是你能解释一下选择、加入和.zero是什么吗?做我对ruby比较陌生:/嘿,没问题:1。(1..n/2)生成从1到n/2的范围类。select从范围元素中进行选择,其中n%e==0零?如果number==0,则方法返回true;select方法返回数组3。推送(n)添加到数组元素(n)