51Nod 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

代码没看太懂,白书上的模板,直接拿来用了,以前学的那个素数打表不能用了,好难受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;
}
原文地址:https://www.cnblogs.com/Friends-A/p/9309003.html