この問題に関連するいくつかのトピックを見つけました。コードが正しくないデータを返す理由を知りたいだけです。したがって、約数が 500 を超える最初の三角形の数を見つける必要があります。詳細はここにあります: http://projecteuler.net/problem=12 そして、ここに私のコードがあります:
Int64 triangularnum = 1;
for (Int64 num = 2; num > 0; num++)
{
if(has501Divisors(triangularnum))
{
MessageBox.Show(triangularnum.ToString());
break;
}
triangularnum += num;
}
private bool has501Divisors(Int64 candidate)
{
bool has501 = false;
int count = 0;
for (int i = 1; i < Math.Sqrt(candidate); i++)
{
if (candidate % i == 0) count += 1;
if (count > 501)
{
return true;
}
}
return has501;
}
これにより、番号 842161320 が得られますが、これは明らかに間違っています。