【发布时间】:2017-03-11 17:05:15
【问题描述】:
12 三角形数的序列是由自然数相加生成的。所以第 7 个三角形数是 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28。前十项是:
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
让我们列出前七个三角形数的因数:
- 1:1
- 3: 1,3
- 6: 1,2,3,6
- 10: 1,2,5,10
- 15: 1,3,5,15
- 21: 1,3,7,21
- 28: 1,2,4,7,14,28
我们可以看到,28 是第一个有五个以上除数的三角形数。
第一个有五百多个除数的三角形数的值是多少?
定义一个列出数字因数的方法 遍历序列直到找到一个包含 500 个因子的三角形 返回具有 500 个因数的数字 if factor.count == 500
def factors(num)
current_number = 1
factors_list= []
while current_number <= num
if is_factor(num,current_number)
factors_list << current_number
end
current_number += 1
end
return factors_list
end
def is_factor(big,small)
if big % small == 0
return true
else
false
end
end
def big_triangle(num) #500
triangles = [1]
natural_numbers = 1
while factors(natural_numbers).count != num
triangles << natural_numbers
natural_numbers += 1
end
triangles.select { |n| factors(n).count == num }
end
【问题讨论】:
-
我已经检查了问题的定义,没有必要存储所有的三角形数字。只需要返回除数超过 500 的第一个三角形数。您是否正在努力做到这一点??
-
你的最后两句话是矛盾的。第一个声明您想要第一个具有超过 500 个因子的三角形数,这就是问题的通常表述方式。第二个表示您想要第一个具有正好 500 个因子的三角形数(尽管您可能意味着超过 500 个)。我不知道是否有正好有 500 个因数的三角形数,如果有,需要多长时间才能找到。
标签: ruby