题目描述
2*n-1是否为质数
输入
多行输入n(2<n<1000)
输出
是输出YES
否则输出NO
样例输入
3 4 5
样例输出
YES YES NO
分析:先进行素数打表,然后对输入的每个数进行比对即可
#include<stdio.h>
typedef long long ll;
const int M=2e3+5;
ll a[M],b[M],i,j,k,len,n;
int main()
{
///////////////////////素数打表////////////////////////////////
for(i=2;i<=M;i++)
{
if(a[i]==0)
for(j=i*2;j<=M;j=j+i)
a[j]=1;
}
for(i=2;i<=M;i++)
{
if(a[i]==0)
b[++len]=i;
}
///////////////////////////////////////////////////////////////
while(scanf("%d",&n)!=EOF)
{
for(i=1;i<=len;i++)
{
if((2*n-1)==b[i])
{
printf("YES\n");
break;
}
else if((2*n-1)<b[i])
{
printf("NO\n");
break;
}
}
}
}