Ruby中最大的主要因素,不使用require' prime'

时间:2013-09-11 20:41:59

标签: ruby

我试图在Ruby中找到x的最大素数因子,而不使用require 'prime'

这是代码

x=13195; n=2; max=n;

for n in (2...x)
  if (x%n==0)
    prime=true
    for y in (1...n)
      if n%y==0
        prime=false
      end
    end
    if prime
      max=n
    end
  end
end

puts max

我知道代码是循环扩展的。它不是“类似Ruby”。我只需要理解代码中的逻辑错误。

2 个答案:

答案 0 :(得分:1)

require 'rubygems'
require 'prime'

x = 13195

#Solution suggested by steenslag
max = x.prime_divison.last.first

puts max  # => 29

答案 1 :(得分:1)

x是一个数组

x=13195, n=2, max=n # => x == [13195, 2, 2] 

你需要

x=13195; n=2; max=n;

因此,(2...[13195, 2, 2])显然是无效的Range