do-while 循环不会在 while 部分得到 false C# 后停止

Do-while loop won't stop after the while part gets false C#

这是确定数字是否为素数的代码的一部分。我知道它可以通过其他方式解决,但我无法弄清楚为什么如果我输入“5”作为数字,这个循环不会停止。在第三个 "divisor++;" 之后除数达到 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);

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

区别是 && 而不是 ||。

while (number % (divisor -1) != 0 || divisor != number)

以上声明永远不会让它崩溃。

例如,如果除数是 5 那么 5 % (5-1) 将是 1 并且循环将继续

当除数为6时

6 != 5 它将继续

你应该使用

while (number % (divisor) != 0);