C# 数范围内的素数因子

C# 数范围内的素数因子,c#,C#,我尝试在VisualStudio中运行此代码。它不输出任何东西,运行无限循环 private void calculateButton_Click(object sender, EventArgs e) { int startNumber, endNumber, counter, num; startNumber = Convert.ToInt32(minValue.Text); endNumber

我尝试在VisualStudio中运行此代码。它不输出任何东西,运行无限循环

    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;
                }

            }

        }
    }
}
private void calculate按钮点击(对象发送者,事件参数e)
{
int startNumber,ENDNAMER,计数器,num;
startNumber=Convert.ToInt32(minValue.Text);
endNumber=Convert.ToInt32(maxValue.Text);
int startNumCounter=startNumber;

对于(num=startNumCounter;num这是我想到的代码:

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++)
            {
                output.Text += $"Factors {num}:";
                counter = 0;
                int numCurrent = num;

                for (int i = 2; i <= numCurrent; i++)
                {
                    bool continueToNexti = false;
                    while (!continueToNexti)
                    {
                        if (numCurrent % i == 0)
                        {
                            output.Text += $" {i} ";
                            numCurrent = numCurrent / i;
                            counter++;
                        }
                        else
                        {
                            continueToNexti = true;
                        }
                    }

                }
                output.Text += Environment.NewLine;
            }
        }
应该是什么

numCurrent = numCurrent / i;
此外,我还提出了一个额外的循环,While循环,来解释一个数字可以被同一个因子多次除的事实

为了加快速度,我改变了

for (int i = 2; i <= num; i++)

for(int i=2;i
num=num/i;
减少循环变量,而不是增加它,这是结束外部
for
循环所需的。我能做些什么来解决此问题?重写循环,使其收敛到零(或任何下限),或更改更改
num
的方式,使其向上收敛到当前循环限制。我想补充一点——一般来说,为
循环变量修改
是非常不寻常的。如果您发现自己需要这样做,则在
时将其重写为
。如果我不想打印prime numb在这个范围内,我会在与bool Nexti相同的区域添加另一个bool语句吗?例如,min:7和max:10。现在7是素数,除了它本身和1之外没有其他因子,所以我不会打印它。所以我会将bool istime设置为true,然后说如果bool isPrime==false,out.textbox=$“factors{num}:”;
for (int i = 2; i <= num; i++)
for (int i = 2; i <= numCurrent; i++)