在学习C#语言的时候遇到了在写”输出1-100间素数“的代码时的for和while 循环的问题,下图分别是外层循环用while和for循环的不同代码和结果。我认为得到的结果应该相同(手动疑惑)
问题相关代码,请勿粘贴截图
//首先是for循环的正确代码,这里我没有异议
for(int i = 2;i <100;i++)
{
bool a = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
a = false;
break;
}
}
if (a)
{
Console.WriteLine(i);
}
}
Console.ReadKey();
然后是用外层用while循环的代码:
//找出1-100内所有的质数(只能被1和他自己整除)
int i = 2;
while(i <=100)
{
bool a = true;
for (int j = 2; j < i; j++)
{
if (i % j == 0)
{
a = false;
break;
}
}
i++;
if (a)
{
Console.WriteLine(i);
}
}
Console.ReadKey();
运行结果及报错内容
第一个for循环代码正确这里不放结果了,下图是用while循环的错误结果
我的解答思路和尝试过的方法
我觉得两个代码的效果应该是一样的啊?为啥后面的不对,是我while用的不对吗,求解。