【洛谷】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;
}
相关推荐
vibecoding日记1 天前
双非如何快速入职字节等大厂大模型?真实案例分析:推理优化和投机解码
算法·求职·大模型工程师
yszaygr21381 天前
Verilog参数化游程编码RLE模块
算法
望易1 天前
刚设计的大模型架构-双域耦合认知框架
算法·架构
复杂网络1 天前
多个 Claude Code 与多个 Codex 协同工作:设计与实现方案
算法
apocelipes2 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
HjhIron2 天前
面试常客:字符串算法从入门到进阶
算法·面试
吴佳浩2 天前
DeepSeek DSpark:Confidence-Scheduled Speculative Decoding 技术解析
人工智能·算法·deepseek
触底反弹2 天前
🧠 搞懂 Token,才算真正入门大模型——从分词原理到 Embedding 语义实战
javascript·人工智能·算法
vivo互联网技术2 天前
ICLR 2026 | 基于后验采样的图像恢复方法LearnIR:人脸去阴影、去雾
人工智能·算法·aigc