NSWOJ-大成若缺

题目描述

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;
			}
		}
	}
} 

猜你喜欢

转载自blog.csdn.net/basketball616/article/details/86623994