难度:普及-
题目描述
输入 n 个不大于 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。
输入格式
第一行输入一个正整数 n,表示整数个数。
第二行输入 n 个正整数 ai,以空格隔开。
输出格式
输出一行,依次输出 ai 中剩余的质数,以空格隔开。
输入输出样例
输入 #1
5 3 4 5 6 7
输出 #1
3 5 7
说明/提示
数据保证,1≤n≤100,1≤ai≤10^5。
思路
这题不需要素数筛,不需要存入数组,判断素数即可。
bool is(int x){
if(x<=1) return false;
for(int i=2;i<=sqrt(x);i++){
if(x%i==0) return false;
}
return true;
}
for(int i=1;i<=n;i++){
cin>>a;
if(is(a))cout<<a<<" ";
}
完整代码
#include<bits/stdc++.h> //万能头文件
using namespace std;
int n,a;
bool isprime(int x){ //判断是否素数
if(x<=1) return false; //如果小于2,一定不是素数
for(int i=2;i<=sqrt(x);i++){ //判断素数
if(x%i==0) return false; //如果可以整除,那么不是素数
}
return true; //是素数
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a;
if(isprime(a)){
cout<<a<<" "; //是素数,输出
}
}
return 0;
}