题目描述
输入 nn 个不大于 105105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。
输入格式
第一行输入一个正整数 nn,表示整数个数。
第二行输入 nn 个正整数 aiai,以空格隔开。
输出格式
输出一行,依次输出 aiai 中剩余的质数,以空格隔开。
输入输出样例
输入 #1复制
5 3 4 5 6 7
输出 #1复制
3 5 7
说明/提示
数据保证,1≤n≤1001≤n≤100,1≤ai≤1051≤ai≤105。
---------------------------------------------------------------------------------------------------------------------------------
很简单的一道题,只要单独判断即可,不需要打表
注意判断时可以用6n + 1或 6n + 5简化,非6n+1或6n+5的数字都是2或者3的倍数.
#include<bits/stdc++.h>
using namespace std;
int temp;
bool isprime() {
if(temp == 1)
return false;
if(temp == 2 || temp == 3)
return true;
if(!(temp % 6 == 1 || temp % 6 == 5))
return false;
for(int i = 2; i<= sqrt(temp); i++) {
if(temp % i == 0)
return false;
}
return true;
}
int main() {
int n;
cin>>n;
for(int i = 1; i<=n; i++) {
cin>>temp;
if(isprime())
cout<<temp<<" ";
}
cout<<endl;
return 0;
}