51Nod 1106 质数检测
给出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
代码没看太懂,白书上的模板,直接拿来用了,以前学的那个素数打表不能用了,好难受T_T
直接贴代码吧
#include <bits/stdc++.h>
using namespace std;
bool prime(int n)
{
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return n!=1;
}
vector<int> divisor(int n)
{
vector<int> res;
for(int i=1;i*i<=n;i++)
{
if(n%i==0)
{
res.push_back(i);
if(i!=n/i) res.push_back(n/i);
}
}
return res;
}
map<int,int> factor(int n)
{
map<int,int> res;
for(int i=2;i*i<=n;i++)
{
while(n%i==0)
{
++res[i];
n/=i;
}
if(n!=1) res[n]=1;
return res;
}
}
int main()
{
int n;
cin>>n;
while(n--)
{
int x;
cin>>x;
if(prime(x)) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
}
return 0;
}