2

この問題に関連するいくつかのトピックを見つけました。コードが正しくないデータを返す理由を知りたいだけです。したがって、約数が 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 が得られますが、これは明らかに間違っています。

4

3 に答える 3