题解:洛谷 P5736 【深基7.例2】质数筛

【题目来源】

洛谷:P5736 【深基7.例2】质数筛 - 洛谷

【题目描述】

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

【输入】

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

第二行输入 \(n\) 个正整数 \(a_i\),以空格隔开。

【输出】

输出一行,依次输出 \(a_i\) 中剩余的质数,以空格隔开。

【输入样例】

5
3 4 5 6 7

【输出】

3 5 7

【算法标签】

《洛谷 P5736 质数筛》 #模拟#

【代码详解】

#include <bits/stdc++.h>  // 包含标准库头文件(万能头文件)
using namespace std;      // 使用标准命名空间

// 函数声明:素数判断函数
bool fun(int n);

int main()
{
    int n;               // 定义变量:数字个数
    int a[105];          // 定义数组:存储输入的数字序列
  
    cin >> n;            // 输入数字个数
  
    // 输入数字序列
    for (int i = 1; i <= n; i++) 
    {
        cin >> a[i];
    }
  
    // 遍历数组,输出素数
    for (int i = 1; i <= n; i++) 
    {
        if (fun(a[i]))   // 如果是素数
        {
            cout << a[i] << " ";  // 输出该素数
        }
    }
  
    return 0;            // 程序正常结束
}

/**
 * 素数判断函数
 * @param n 待判断的数字
 * @return 如果是素数返回true,否则返回false
 */
bool fun(int n)
{
    if (n <= 1)         // 小于等于1的数不是素数
    {
        return false;
    }
  
    // 检查从2到n-1是否有因数
    for (int i = 2; i < n; i++) 
    {
        if (n % i == 0) // 如果能被整除,不是素数
        {
            return false;
        }
    }
  
    return true;        // 否则是素数
}

【运行结果】

5 
3 4 5 6 7
3 5 7 
posted @ 2026-02-16 18:04  团爸讲算法  阅读(1)  评论(0)    收藏  举报