想问问我这输出前五十个素数哪错了?

#include<stdio.h>
int main()
{
int x;
int i;
int iss=1;
int cont=0;
for(x=2;cont<=50;x++)
{
for(i=2;i<x;i++)
if(x%i==0)
{
iss=0;
break;
}
if(iss==1)
{
printf("%d",x);
cont++;
}
}
return 0;
}

iss要在外循环每测试一个x数之前都要重置为1

你题目的解答代码如下:

#include <stdio.h>
int main()
{
    int x;
    int i;
    int iss = 1;
    int cont = 0;
    for (x = 2; cont <= 50; x++)
    {
        iss = 1; //iss要在外循环每测试一个x数之前都要重置为1
        for (i = 2; i < x; i++)
            if (x % i == 0)
            {
                iss = 0;
                break;
            }
        if (iss == 1)
        {
            printf("%d ", x);
            cont++;
        }
    }
    return 0;
}

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

iss=1;的初始化要放在第一个循环语句内部,修改如下:

#include<stdio.h>
int main()
{
    int x;
    int i;
    int iss=1;
    int cont=0;
    for(x=2;x<=50;x++)
    {
        iss = 1; //加上该语句初始化
        for(i=2;i<x;i++)   //修改
            if(x%i==0)
            {
                iss=0;
                break;
            }
        if(iss==1)
        {
            printf("%d\t",x);
            cont++;
        }
    }
    return 0;
}

#include<stdio.h>
int main()
{
    int x;
    int i;
    int iss=1;
    int cont=0;
    for(x=2;cont<=50;x++)
    {
        iss=1; // 每次重置
        for(i=2;i<x;i++)
            if(x%i==0)
            {
                iss=0;
                break;
            }
        if(iss==1)
        {
            printf("%d\n",x);
            cont++;
        }
    }
    return 0;
}