【洛谷】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;
}
相关推荐
ajassi20001 天前
开源 C++ QT QML 开发(二十)多媒体--摄像头拍照
c++·qt·开源
_OP_CHEN1 天前
C++基础:(十二)list类的基础使用
开发语言·数据结构·c++·stl·list类·list核心接口·list底层原理
2401_841495641 天前
【计算机视觉】基于复杂环境下的车牌识别
人工智能·python·算法·计算机视觉·去噪·车牌识别·字符识别
Jonkin-Ma1 天前
每日算法(1)之单链表
算法
晚风残1 天前
【C++ Primer】第六章:函数
开发语言·c++·算法·c++ primer
杨云强1 天前
离散积分,相同表达式数组和公式
算法
地平线开发者1 天前
征程 6 | BPU trace 简介与实操
算法·自动驾驶
满天星83035771 天前
【C++】AVL树的模拟实现
开发语言·c++·算法·stl
。。。9041 天前
mit6s081 lab8 locks
操作系统·c
Lris-KK1 天前
力扣Hot100--94.二叉树的中序遍历、144.二叉树的前序遍历、145.二叉树的后序遍历
python·算法·leetcode