【洛谷】P5736 【深基7.例2】质数筛(详细思路分析)

cpp 复制代码
#include <iostream>  //引入输入/输出流头文件,用于实现标准输入输出操作
#include <cmath>     //引入数学函数库头文件,用于调用数学相关的函数,这里主要是为了使用sqrt函数来求平方根

using namespace std;

//函数声明:判断一个整数是否为质数(素数)
//参数:
//x:要判断的整数
//返回值:如果x是质数则返回true(在C++中用1表示),否则返回false(在C++中用0表示)
bool isP(int x);

int main()
{
    //定义一个包含100个整数的数组A,并初始化为0
    //这里数组A可用于存储输入的一系列整数
    int A[100] = { 0 };

    //定义一个整数变量n,用于存储后续要输入的整数个数
    int n;

    //从标准输入读取整数n的值,即要输入的整数的个数
    cin >> n;

    //通过循环,从标准输入依次读取n个整数,并存储到数组A中
    for (int i = 0; i < n; i++)
        cin >> A[i];

    //再次通过循环遍历数组A中的每个元素
    for (int j = 0; j < n; j++)
    {
        //对于数组A中的每个元素A[j],调用isP函数判断其是否为质数
        //如果是质数,则将该元素输出到控制台,每个质数之间用空格隔开
        if (isP(A[j]))
            cout << A[j] << " ";
    }

    return 0;

//函数定义:实现判断一个整数是否为质数(素数)的功能
//参数:
//x:要判断的整数
//返回值:如果x是质数则返回true(在C++中用1表示),否则返回false(在C++中用0表示)
bool isP(int x)
{
    //特殊情况判断:如果x等于2,2是质数,直接返回true(1)
    if (x == 2)
        return 1;

    //特殊情况判断:如果x等于1,1不是质数,直接返回false(0)
    if (x == 1)
        return 0;

    //通过循环从2开始到x的平方根取整(包含)来判断x是否能被整除
    //如果能被其中某个数整除,说明x不是质数,返回false(0)
    for (int i = 2; i <= sqrt(x); i++)
    {
        if (x % i == 0)
            return 0;
    }

    //如果循环结束都没有找到能整除x的数,说明x是质数,返回true(1)
    return 1;
}
相关推荐
木井巳31 分钟前
【动态规划: 线性dp】解码方法
java·算法·leetcode·动态规划·推荐算法
春弦_8 小时前
自用算法整理二
数据结构·算法·图论
hetao17338379 小时前
2026-10-22~23 hetao1733837 的刷题记录
c++·算法
java_nnnn10 小时前
LeetCode刷题滑动窗口(串联所有单词的子串+最小覆盖的子串)Java
算法·leetcode·职场和发展
王老师青少年编程10 小时前
2025年6月GESP真题及题解(C++三级): 选择题和判断题(题解)
c++·真题·gesp·答案·csp·三级·信奥赛
Navigator_Z11 小时前
LeetCode //C - 1301. Number of Paths with Max Score
c语言·算法·leetcode
卡卡~~11 小时前
“101计划”核心课程实践教材《数据实验结构指导-C++语言版》题目集
开发语言·c++·学习·算法
企业数字化笔记12 小时前
AI视频增强后画质怎么验收?插值基线、伪细节与帧间闪烁的检查方法
人工智能·算法·音视频
学逆向的12 小时前
C 内存属性
c语言·开发语言·算法·网络安全