問題
三角数の数列は自然数の和で表わされ、7番目の三角数は 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28 である。 三角数の最初の10項は
1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...
となる。
最初の7項について、その約数を列挙すると、以下のとおり。
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
これから、7番目の三角数である28は、6個以上の約数をもつ最初の三角数であることが分る。
では、501 個以上の約数をもつ最初の三角数はいくらか。
問題を解いたプログラム
def getAliquot(def num) {
def results = (1..Math.sqrt(num)).findResults {
if (num % it == 0) {
it
}
}
results.size() * 2
}
def num = 1
def triangularNumbers = num
while (getAliquot(triangularNumbers) <= 500){
num++
triangularNumbers += num
}
println "num = ${triangularNumbers}"