我发现了几个与这个问题相关的主题,我只想知道为什么我的代码返回不正确的数据。所以我们必须找到第一个具有超过 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,这显然是不正确的。