2011年1月29日土曜日

ProjectEulerを斬る!問12

Problem 12
08 March 2002

The sequence of triangle numbers is generated by adding the natural numbers. So the 7^(th) triangle number would be 1 + 2 + 3 + 4 + 5 + 6 + 7 = 28. The first ten terms would be:

1, 3, 6, 10, 15, 21, 28, 36, 45, 55, ...

Let us list the factors of the first seven triangle numbers:

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

We can see that 28 is the first triangle number to have over five divisors.

What is the value of the first triangle number to have over five hundred divisors?

三角数数列は自然数を足し加えることで作り出すことができます。
なので、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
上からもわかるように、三角数で最初に約数の数が5つを超えるものは28です。
では最初に500つの約数を超える三角数はいくつでしょうか。(日本語訳PNN)




using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int tri = 0;
int n_fact = 0;
for (int i = 1; n_fact <= 500; i++)
{
tri += i;
n_fact = 2;
for (int j = 2; j <= Math.Sqrt(tri); j++)
{
if ((int)(tri / j) * j == tri)
{
n_fact += 2;
}
}
}
Console.WriteLine(tri);
Console.ReadLine();
}
}
}

出力結果:76576500
↑ちょっと面白い数字

0 件のコメント:

コメントを投稿