数学:素数判定

判断一个数n是不是质数,如果是返回1,否则返回0。这里加入了一个数学优化,只需要判断到根号n就好了。

bool is_prime(int x)
{
    if(x==0||x==1)
        return 0;
    int m=int(sqrt(x)+0.5);
    for(int i=2;i<=m;i++)
    {
        if(x%i==0)
            return 0;
    }
    return 1;
}

完整代码如下,计数了0-10000的闭区间内有多少个质数。

#include<iostream>
#include<cmath>
using namespace std;
bool is_prime(int x)
{
    if(x==0||x==1)
        return 0;
    int m=int(sqrt(x)+0.5);
    for(int i=2;i<=m;i++)
    {
        if(x%i==0)
            return 0;
    }
    return 1;
}
int main()
{
    int tot=0;
    for(int i=0;i<=10000;i++)
    if(is_prime(i))
    {
        tot++;
    }
    cout<<tot;
    return 0;
}

 

posted @ 2018-07-05 11:32  静听风吟。  阅读(209)  评论(0编辑  收藏  举报