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