100到200的所有素数用while输出

img


用同样格式for语句可以,但while不可以,为什么输出不出来

#include<stdio.h>//头文件
#include<math.h>//为了引入sqrt求平方根函数
int main()//主函数
{
int number,i;//定义变量
for(number=100;number<201;number++)//这个for循环主要是限制100-200之间
{
for(i=2;i<=sqrt(number);i++)
{
if(number%i==0)//如果余数为0
break;//跳出当前循环
}
if(number%i!=0)//如果求余不等于0,则为素数
printf("%d\n",number);//输出素数
}
return 0;//函数返回值为0
}

逻辑有问题,你的n没有归2,里面的while结束后n的值没有归2呀,下一次里面的while循环n的值,还是上一次结束加完的,所以总会有i==n,所以都会输出咯。修改后的代码和运行图已贴出来,记得采纳一下哦!

#include <stdio.h>
int main(){
    int i = 100,n=2;
    while(i<=200){
        i++;
        
        while(n<i){
            n++;
            if(i%n==0){
                break;
            }
        }
        
        if(i==n){
            printf("%d\t",i);
        }
        
        n = 2; //n的值归2 
    }
} 

img

有帮助的话采纳一下哦!

愣是让我调了一会儿

img


#include<stdio.h>

int main()
{
    int i = 2;
    int n = 2;
    while (i <= 200) {
        i++;
        while (n < i)
        {
            if (i % n == 0)
            {
                break;
            }
            n++; 
        }
        if (i == n)
        {
            printf("%d \t ", i);
        }
        n = 2;
    }
    
    return 0;
}