51nod1106

题链http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1106

基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题

 收藏

 关注

给出N个正整数,检测每个数是否为质数。如果是,输出"Yes",否则输出"No"。

Input

第1行:一个数N,表示正整数的数量。(1 <= N <= 1000)
第2 - N + 1行:每行1个数(2 <= S[i] <= 10^9)

Output

输出共N行,每行为 Yes 或 No。

Input示例

5
2
3
4
5
6

Output示例

Yes
Yes
No
Yes
No

简单的素数筛选?不可能的......刷一下午51题都快崩溃了,又是卡内存的又是卡时间的。

简单的素数打标...

#include<iostream>
#include<string.h>
#include<math.h>
const long long MAX=1000000;
using namespace std;
long long isprime[MAX];
int num;
int prime()
{
	memset(prime1,0,sizeof(prime1));
	memset(isprime,0,sizeof(isprime));
	isprime[1]=1;isprime[2]=0;
	for(long long i=2;i<=sqrt(MAX);i++)
	{
		if(!isprime[i])
		{
			for(long long j=i*i;j<MAX;j+=i)
			{
				isprime[j]=1;
			}
		}
	}
	/*for(int i=1;i<5;i++)
	cout<<prime1[i]<<endl;*/
}
int main()
{
	prime();
	long long n;
	cin>>n;
   while(n--)
   {
   	  long long m;
   	  cin>>m;
   	  if(!isprime[m])
   	  cout<<"Yes"<<endl;
   	  else
   	  cout<<"No"<<endl;
   }
	return 0;
}

一个一个判断不用打表......emmm贼无语

#include<iostream>
#include<string.h>
#include<math.h>
using namespace std;
int prime(int x)
{
	if(x==2) return 1;
	if(x==1) return 0;
	for(int i=2;i<=sqrt(x);i++)
		if(x%i==0)
		return 0;
		
	return 1;
}
int main()
{

	long long n;
	cin>>n;
   while(n--)
   {
   	  long long m;
   	  cin>>m;
   	  if(prime(m))
   	  cout<<"Yes"<<endl;
   	  else
   	  cout<<"No"<<endl;
   }
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41453511/article/details/81147334