【洛谷】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;
}
相关推荐
香蕉鼠片11 分钟前
MFC是什么
c++·mfc
心态与习惯34 分钟前
Julia 初探,及与 C++,Java,Python 的比较
java·c++·python·julia·比较
py有趣41 分钟前
力扣热门100题之不同路径
算法·leetcode
_日拱一卒1 小时前
LeetCode:25K个一组翻转链表
算法·leetcode·链表
啊哦呃咦唔鱼1 小时前
LeetCodehot100-394 字符串解码
算法
小欣加油1 小时前
leetcode2078 两栋颜色不同且距离最远的房子
数据结构·c++·算法·leetcode·职场和发展
我真不是小鱼1 小时前
cpp刷题打卡记录30——轮转数组 & 螺旋矩阵 & 搜索二维矩阵II
数据结构·c++·算法·leetcode
南境十里·墨染春水1 小时前
C++ 笔记 thread
java·开发语言·c++·笔记·学习
南境十里·墨染春水2 小时前
C++ 笔记 高级线程同步原语与线程池实现
java·开发语言·c++·笔记·学习
瞎折腾啥啊2 小时前
CMake FetchContent与ExternalProject
c++·cmake·cmakelists