P5736 【深基7.例2】质数筛

题目描述

输入 n n n 个不大于 1 0 5 10^5 105 的正整数。要求全部储存在数组中,去除掉不是质数的数字,依次输出剩余的质数。

输入格式

第一行输入一个正整数 n n n,表示整数个数。

第二行输入 n n n 个正整数 a i a_i ai,以空格隔开。

输出格式

输出一行,依次输出 a i a_i ai 中剩余的质数,以空格隔开。

样例 #1

样例输入 #1

5
3 4 5 6 7

样例输出 #1

3 5 7

提示

数据保证, 1 ≤ n ≤ 100 1\le n\le100 1n100 1 ≤ a i ≤ 1 0 5 1 \leq a_i \leq 10^5 1ai105

1.题目分析

输入若干个整数,按顺序打印出其中的质数。
质数的判断方法:一个数不能被自身和1以外的数整除。

2.题目思路

写一个判断质数的函数,是质数返回1,不是返回零。
第一行输入整数个数,写一个循环键入每一个数,
然后调用判断质数的函数,如果返回为1则直接打印即可。

3.代码实现

#include 
#include 
using namespace std;
//判断质数的函数
int isPrimer(int n) {
    int flag = 1;
    //对1和0进行特判
    if (n == 1 || n == 0) {
        flag = 0;
    }
    for (int i = 2; i <= sqrt(n); ++i) {
        if (n % i == 0) {
            //可以被自身整除则不为质数
            flag = 0;
        }
    }
    return flag;
}

int main(){
    int n,ai;
    //输入个数
    cin >> n;
    for (int i = 0; i < n; ++i) {
        cin >> ai;
        //判断是否为质数,是的话直接打印
        if (isPrimer(ai) == 1){
            cout << ai << " ";
        }
    }
    return 0;
}

你可能感兴趣的:(刷题go,go,go,算法,c++)