C语言,请问这个代码为啥提交不了……

提交的时候显示wrong answer,但是我不知道哪里有问题,主函数和函数头都不能更改……

int isPrime(int x)
{
    int flag = 1,i;
    if(x == 1)
    flag = 1;
    if(x == 2)
    flag = 1;
    if(x > 2)
    {
        if(x % 2 == 0)
        flag = 0;
        else
        {
            for(i = 3;i < x / 2;++i)
            {
                if(x % i == 0)
                flag = 0;
                break;
            }
        }
        
    }
    return flag;
}

Description
cyn小朋友上小学也有一两年啦,今天数学课上mwy老师教他的是什么是素数,cyn小朋友很开心的开始验证老师给出的数字是不是素数啦,你能和他一起验证吗?(主函数代码部分已经固定,请按需写函数部分,如果提交的不是c语言则需提交全部代码)

#include<stdio.h>
int isPrime(int x);
int main()
{
int t;
scanf("%d",&t);
while(t--)
{
int n;
scanf("%d",&n);
if(isPrime(n))
{
printf("YES ");
}
else
{
printf("NO ");
}
}
return 0;
}
Input
第一行输入一个T,表示有T组数据。

接下来T行,每行只有一个整数n(1 <= n <= 99999),代表你需要验证的整数。

Output
对于每一个n,若是素数就输出“YES”,否则输出“NO”

Samples
input
4
1
2
3
4
output
NO
YES
YES
NO

  1. 1不是素数
  2. for循环里面if后面加个大括号把break也套进去

没发现什么问题,被修改了一下,非按你意思修改,仅供参考!

img

img

#include <stdio.h>
int isPrime(int x)
{
    int flag = 1, i;
    if (x < 3 )
    {
        return 1;
    }

    if (x > 2)
    {
        if (x % 2 == 0)
            flag = 0;
        else
        {
            for (i = 3; i < x / 2; ++i)
            {
                if (x % i == 0)
                    flag = 0;
                break;
            }
        }
    }
    return flag;
}

int main(int argc, char *argv[])
{
    int t = 0, i = 0;
    do
    {
        scanf("%d", &t);
    } while (t <= 0 || t > 99999);

    int n[t], j = t;

    while (t--)
    {
        scanf("%d", &n[i++]);
    }
    //puts("");
    for (int i = 0; i < j; i++)
    {
        if (isPrime(n[i]))
            puts("YES");
        else
            puts("NO");
    }

    return 0;
}