【发布时间】:2010-12-26 02:15:44
【问题描述】:
希望能比我上一个不那么新奇……
无论如何,我正在编写一个将数字简化为素数的小应用程序,主要是为了帮助完成诸如家庭作业之类的小事。
但是,一个特定的方法给了我标题中提到的错误:
def get_simps(num)
curr = 2
print("Working...")
while (curr <= num)
#If they divide cleanly, then it's a simplified form
if (num % curr == 0)
res = [curr, num / curr]
break
end
curr += 1
end
print("\n")
return res
end
其中参数 num 由该语句提供:
print("Insert number here: ")
num = gets().chomp().to_i()
因此使错误变得奇怪:为什么它说我比较 Fixnum 和 ARRAY?我也这样做了:
if (num.class() == curr.class())
print "Cheese"
end
它打印出奶酪。那么为什么会出错呢?
【问题讨论】:
-
复制粘贴到 IRB 并使用
get_simps(gets().chomp().to_i())调用不会给我一个错误(尽管它确实给出了错误的结果:get_simps(15000) => [2, 7500] -
您发布的代码对我来说很好用。你在做
get_simps(get_simps(20))之类的事情吗? -
另外,“错误”,因为我希望它返回数字的素数分解。
-
@Tordek 实际上,这看起来像是一种检测素数的方法,它会返回因子以及除以该数的结果是什么,如果素数是
nil。 -
@new123456 完整的回溯,也许这个程序的目的在这里会有很大帮助。