只能使用赋值、调用、递减

本文关键字:调用 递减 赋值 | 更新日期: 2023-09-27 17:58:39

我试图找到某个范围内的素数整数。当我在else语句中放入for循环时,我似乎遇到了一个错误。

private static bool prime(int n,out int factor)
{
    factor = 1;
    if (n < 2)
        return false;
    else if (n == 2 || n == 3)
        return true;
    else if( n % 2 == 0) 
        return false;
    for(int r = 3; r < (Math.Sqrt(n) + 1); r + 2)
    {
        if ((Convert.ToInt32(n)) % r == 0)
            return false;
    }
}

只能使用赋值、调用、递减

for(int r=3;r<(Math.Sqrt(n)+1);r+2)

r+2创建了一个结果,但它没有分配给任何内容。您想要r = r + 2r += 2

您的代码有几个问题。

首先,你可以解决像这样的分配问题

r=r+2

其次,函数需要从所有代码路径返回一些内容。它目前没有这样做。虽然你可以在这里选择你的逻辑,但我最后还是回到了真。

private static bool prime(int n, out int factor)
    {
        factor = 1;
        if (n < 2)
            return false;
        else if (n == 2 || n == 3)
            return true;
        else if (n % 2 == 0)
        {
            return false;
        }

        for (int r = 3; r < (Math.Sqrt(n) + 1); r = r + 2)
        {

            if ((Convert.ToInt32(n)) % r == 0)
                return false;
        }
        return true;
    }