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);
这是确定数字是否为素数的代码的一部分。我知道它可以通过其他方式解决,但我无法弄清楚为什么如果我输入“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);