质数算法

来源:互联网 发布:文华模拟交易软件 编辑:程序博客网 时间:2024/05/16 09:45

分别用定义法和筛选法求素数,第一种适合判定单个素数,第二种适合判断区间内素数。

#include <iostream>#include <cmath>using namespace std;/*定义法求素数*/bool primeNum1(int x){    int i;    if(x>0&&x<=3)    {        return true;    }    if(x%2==0)//如果是2的倍数返回false    {        return false;    }    for(i=3;i<=sqrt(x);i=i+2)//从3开始每次跳两步到参数的平方根    {        if(x%i==0)        {            return false;        }    }    return true;}/*筛选法求素数*/bool primeNum2(int x){    int i,j,k;    bool *isprimes = new bool[x+1];    for(k=2; k<=x; k++)    {        isprimes[k] = true;    }    for(i=2; i<=x; i++)    {        if(isprimes[i])        {            for(j=2;i*j<=x;j++)            {                isprimes[i*j] = false;            }        }    }    return isprimes[x];}int main(){    int x;    cin >> x;    if(primeNum1(x))    {        cout << "YES";    }else    {        cout << "NO";    }    if(primeNum2(x))    {        cout << "YES";    }else    {        cout << "NO";    }    return 0;}
0 0