题解:洛谷 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
浙公网安备 33010602011771号