📜  素数 c++ (1)

📅  最后修改于: 2023-12-03 15:41:11.168000             🧑  作者: Mango

素数及其判断代码的实现

素数是指仅能被1和本身整除的正整数,在计算机算法中经常需要使用。下面将介绍素数的判断方法以及C++代码的实现。

什么是素数

素数,又称质数,是指只能被1和本身整除的正整数,它是大于1的自然数中,除了1和本身以外,不能被其他自然数整除的数。

例如: 2、3、5、7、11等数字就是素数。

素数的判断方法
暴力枚举法

暴力枚举法,就是从2到该数本身-1的所有数进行判断,如果有一个数能够整除该数,那么该数就不是素数。

代码实现如下:

bool isPrime(int n){
    if(n < 2) return false;
    for(int i = 2; i*i <= n; i++){
        if(n % i == 0) return false;
    }
    return true;
}
厄拉多塞筛法

厄拉多塞筛法,又称埃氏筛法,通过筛选来找到素数。其基本思想是,从2开始,将每个质数的倍数都标记成合数,以达到筛选素数的目的。

代码实现如下:

bool isPrime(int n){
    if(n < 2) return false;
    bool *isprime = new bool[n + 1];
    for(int i = 2; i <= n; i++) isprime[i] = true;
    for(int i = 2; i*i <= n; i++){
        if(isprime[i]){
            for(int j = i*i; j <= n; j += i){
                isprime[j] = false;
            }
        }
    }
    bool res = isprime[n];
    delete []isprime;
    return res;
}
小结

本文介绍了素数及其判断方法,并给出了对应的C++代码实现。对于大量数据的素数判断,厄拉多塞筛法能够很好地解决此类问题。