C++素数判断代码



C++素数判断代码

bool is_prime(int n)
{
    if(n<2)
        return false;
    for (int i=2;i*i<=n;i++)
    {
        if(n % i == 0)
            return false;
    }
    return true;
}
int main()
{
    int n;
    cin>>n;
    if (is_prime(n))
    {
        cout<<"yes"<<endl;
    }
    else
    {
        cout<<"no"<<endl;
    }
这段代码怎么理解求注释,特别是主函数上面的一段?
分享到:

2013-10-10 16:09

提问者采纳

就是判断素数的一些原理,注释如下:

1
2
3
4
5
6
7
8
9
10
11
bool is_prime(int n)    //对n进行判断
{
    if(n<2)            //如果n小于2就不是素数,素数规定大于或等于2的整数
        return false;
    for (int i=2;i*i<=n;i++)    //判断是否为素数可以使用所有比n小的数与n相除,如果能除开就不是素数,但是其实只需要判断到i*i>=n就可以了,因为此时已经不存在比i大的数能把n除开啦,仔细想想就会明白啦
        {                           
        if(n % i == 0)
            return false;
    }
    return true;
}
追问
如果第3行N小于2不是素数那下一步是执行哪个语句
回答
直接返回false,说明它不是素数
追问


那么他接着是不是要执行主函数里的语句并且输出NO
回答
是的
追问
for语句中如果满足条件i*i<=n后面是到if语句还是先+i再进入if语句
回答
是先进循环,结束后i++
提问者评价
谢谢!

http://zhidao.baidu.com/link?url=4gJyMSHzcjtDQNc5vfByp9YexoRk823AlpwLJgM-ewAWS0cxz04NS5eCIEqSS7MLglOUDsE-_prz3loENwIoT7Tuqs08GJ-Lgo0zoO5W683