Ruby中的Trial Division进行质分解

时间:2019-07-08 15:45:22

标签: ruby

我是Ruby的新手。我确实有一些使用python的经验,但是最近回到编码时,我选择学习Ruby。我正在开发一个程序,该程序需要查找数字的素因,所以我创建了一种使用试除法的方法。然后,当我尝试调用该方法时,出现错误 driver = webdriver.Firefox() driver.implicitly_wait(30) driver.maximize_window() driver.get("http://www.google.com") search_field = driver.find_element_by_id("lst-ib") search_field.clear() search_field.send_keys("argentina vnl 2019") search_field.submit()

我尝试过使用while循环的break代替end来获得相同的结果。我不知道红宝石中有什么导致该方法无法被识别。

trial_division': undefined method `*' for nil:NilClass (NoMethodError)

我希望程序查找数字的素因数并显示数组。

1 个答案:

答案 0 :(得分:2)

据我所知,有2个错误:f=3行在while循环中,当n碰巧是奇数时,导致f为零。 nil没有*方法,这会导致错误。

while f*f<n也失败了9个;应该是while f*f <= n。请注意,puts返回nil,因此整个方法返回nil。

也:https://ruby-doc.org/stdlib-2.6.3/libdoc/prime/rdoc/Prime.html#method-i-prime_division。(require "prime"; p 100.prime_division