-5

我为我最近的帖子道歉,我不清楚,做了很少的研究,并且违反了一些网站的规则。因此,我正在上传一个实际工作代码的新版本,除了一个问题。我对此代码的回报是“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;
    }
4

1 回答 1

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;

它所做的只是作为一个基本案例。

于 2013-08-01T22:05:18.700 回答