在while部分获取错误C#之后,do-while循环不会停止

时间:2019-03-09 13:03:05

标签: c# loops exit do-while

这是确定数字是否为质数的代码的一部分。我知道可以用其他方法解决此问题,但是我无法弄清楚为什么如果我输入“ 5”作为数字,此循环将不会停止。除数在第三个“除数++”之后达到5; (除数从2开始),但是while循环不会退出。 谁能帮我吗?

 do
            {
                if (number % divisor == 0)
                {
                    Console.WriteLine("Number is not a prime.");
                }

                if (divisor == number - 1)
                {
                    Console.WriteLine("Number is prime.");
                }
                divisor++;
            } while (number % (divisor -1) != 0 || divisor != number);

2 个答案:

答案 0 :(得分:2)

条件可能应该是... != 0 && divisor != number

差异是&&而不是||。

答案 1 :(得分:2)

while(数字%(除数-1)!= 0 ||除数!=数字)

以上声明永远不会让它中断。

例如,如果除数为5,则 5%(5-1)将1并继续循环

当除数为6时

6!= 5并将继续

您应该使用

while(数字%(除数)!= 0);