【发布时间】:2020-02-20 19:56:20
【问题描述】:
我尝试在 Visual Studio 中运行此代码。它不输出任何东西并运行无限循环。
private void calculateButton_Click(object sender, EventArgs e)
{
int startNumber, endNumber, counter, num;
startNumber = Convert.ToInt32(minValue.Text);
endNumber = Convert.ToInt32(maxValue.Text);
int startNumCounter = startNumber;
for (num = startNumCounter; num <= endNumber; num++)
{
counter = 0;
int numCurrent = num;
for (int i = 2; i <= num; i++)
{
if (numCurrent % i == 0)
{
output.Text += " " + i + " ";
num = num / i;
counter++;
}
if (counter != 0 && num >= 2)
output.Text = "Factors: " + num;
}
}
}
}
}
预期输出:Min 7, Max: 10 ...... 8: 2 * 2 * 2. 9: 3 * 3. 10: 2 * 5. 所以它会在 min 和 max 范围内找到数字的素因数.如果范围内的数字是素数,则不计入素数。
【问题讨论】:
-
num = num / i;减少你的循环变量;它不会增加它,这是结束您的外部for循环所需要的。 -
我能做些什么来解决这个问题?
-
要么重写你的循环,使其收敛到零(或任何你的下限),或者改变你改变
num的方式,使它向上收敛到你当前的循环限制。 -
我想补充一下——一般来说,修改
for循环变量是非常不寻常的。如果您发现自己需要做类似的事情,将其重写为while通常会更清晰。
标签: c#