没有定义和类的素数,只是循环

时间:2017-03-01 02:15:14

标签: ruby primes

我正在尝试输入任何数字并检查素数。我试图避免类和定义。我试图只使用循环。我的代码列在下面。

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等数字。我可以在代码中添加或删除吗?如果有一种有效的方式,我应该摆脱我正在做的事情,我也会考虑帮助。

2 个答案:

答案 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到一半没有。每当我们得到我们的第一个素数没有。 (最高)我们停止条件循环并返回最高素数。