【洛谷】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;
}
相关推荐
政企项目老覃6 小时前
大模型 Agent 自主任务编排:电商客服地址解析从 12% 失败率到 2.1% 的落地复盘
人工智能·程序人生·算法
汉克老师6 小时前
CSP-J 2026 初赛试题解析(第三部分:完善程序题(第二题))精讲
c++·csp-j·小学生·学c++编程
kukubuzai6 小时前
双指针系列二--末尾篇(3道题)
c++·算法·leetcode
动词ing6 小时前
【题目练习】动态规划+背包问题
数据结构·目标检测
杜 硕6 小时前
单链表经典算法题
数据结构·算法
汉克老师6 小时前
CSP-J 2026 初赛试题解析(第二部分:阅读程序题(第二题))精讲
c++·csp-j·小学生·学c++编程
神仙别闹7 小时前
基于 C++ 实现(控制台)关键字检索系统
c++
重生之小比特7 小时前
【初阶C++】stack和queue
开发语言·c++·vs·queue
qq_199886877 小时前
第8板块·第1节:主机与设备内存管理基础与统一内存
c++·人工智能·gpu算力·cuda