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