我为我最近的帖子道歉,我不清楚,做了极少的研究,并违反了一些网站的规则。因此,我正在上传一个实际工作代码的新版本,除了一个问题。我对这段代码的回报是“1”,而不是我要找的结果:“600851475143”的最大因素。这是修订后的,希望更容易理解的代码。我再次非常抱歉违反了网站的政策。
public long Prob_3()
{
long a = 600851475143;
int e = 1;
for (long i = 0; i < 10; i++)
{
if (a % 2 == 0 && a != 1)
{
a = a / 2;
}
else if (a % 2 != 0 && a % (e + 2) == 0 && a != 1)
{
a = a / (e + 2);
}
while (a % 2 != 0 && a % (e + 2) != 0 && a != 1)
{
e = e + 2;
}
}
return a;
}
答案 0 :(得分:1)
您的计划是正确的,但您没有返回600851475143
的最重要因素;你在归还它之前就把它分开了!要“修复”您的代码,我所做的就是在Prob_3
的正文中添加以下注释行:
long a = 600851475143;
int e = 1;
for (long i = 0; i < 10; i++)
{
if (a % 2 == 0 && a != 1)
{
a = a / 2;
}
else if (a % 2 != 0 && a % (e + 2) == 0 && a != 1)
{
if (a / (e + 2) == 1) break; // !
a = a / (e + 2);
}
while (a % 2 != 0 && a % (e + 2) != 0 && a != 1)
{
e = e + 2;
}
}
return a;
它的作用仅仅是作为一个基本案例。