我正在尝试输入任何数字并检查素数。我试图避免类和定义。我试图只使用循环。我的代码列在下面。
puts "What number would you like to find the largest prime factor?: "
lastnum = gets.to_i
puts "Number to find the largest prime factor is #{lastnum}"
n = 2
while (n <= lastnum)
if n % 2 == 0
puts "#{n} is not a prime"
elsif n % Math.sqrt(n) == 0
puts "#{n} is not a prime, sqrt rooted"
else
puts "#{n} is a prime"
end
n += 1
end
如果我输入99
,我会在我的素数列表中获得100
等数字。我可以在代码中添加或删除吗?如果有一种有效的方式,我应该摆脱我正在做的事情,我也会考虑帮助。
答案 0 :(得分:1)
这是一个不使用方法的maximum_primes脚本。
input = 100
result = 2.upto(input - 1).select do |test_num|
2.upto(test_num - 1).none? do |test_divider|
(test_num % test_divider).zero?
end
end.max
puts result
# => 97
答案 1 :(得分:0)
输入最高范围,直到您想要找到最高素数
lastnum = 100
(1..lastnum).reverse_each do |num|
if (2..num/2).none?{|i| num % i == 0}
puts num
break
end
end
在这里,我们获得 lastnum var的最高范围,我们检查素数否。按降序排列(此处为100比1)并将其除以否。从2到一半没有。每当我们得到我们的第一个素数没有。 (最高)我们停止条件循环并返回最高素数。