判断是否为素数结果出错

今天看网课,想默写打打看判断素数的代码,结果有个数据错了,看了好久不知道我哪里出错了
就是数组下标为要判断的值,那个数组单元为1说明下标值就是素数,0就不是
图示代码

img


我的代码

#include
#define max 15
int main(void)
{
    int prime[max]={0,0,1};
    int i;
    int x;
    for(i=2; i1;
    }

    for(i=2; iif(prime[i])
      {
        for(x=2; x*i0;
        }



      }

    for(i=2; iprintf("%d\t",i);

    }
    printf("\n");
     for(i=2; iprintf("%d\t",prime[i]);

    }
     printf("\n");

    for(i=2; iif(prime[i])
       printf("%d\t",i);
    }



    }







    return 0;
}


输出结果

img


为什么我的prime[9]的值会是1呢

第17行:for(x=2; x*i<max; x++) 修改为:for(x = i; x*i < max; x++) 。

#include<stdio.h>
#define max 15
int main(void)
{
    int prime[max]={0,0,1};
    int i;
    int x;
    for(i=2; i<max; i++)
    {
        prime[i] = 1;
    }

    for(i=2; i<max; i++)
    {
      if(prime[i])
      {
        for(x=i; x*i<max; x++)  //(x=2; x*i<max; x++)
        {
          prime[x*i] = 0;
        }
      }
    } //修改
    for(i=2; i<max; i++)
    {
        printf("%d\t",i);

    }
    printf("\n");
     for(i=2; i<max; i++)
    {
        printf("%d\t",prime[i]);

    }
     printf("\n");

    for(i=2; i<max; i++)
    {
        if(prime[i])
           printf("%d\t",i);
    }
    return 0;
}

47行的大括号挪到23行

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^