提交的时候显示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
没发现什么问题,被修改了一下,非按你意思修改,仅供参考!
#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;
}