为了账号安全,请及时绑定邮箱和手机立即绑定

这段代码什么意思

这段代码什么意思

狼顾之相1995 2016-09-15 17:33:33
public static boolean isPrime(int a) { boolean flag = true; if (a < 2) {// 素数不小于2 return false; } else { for (int i = 2; i <= Math.sqrt(a); i++) { if (a % i == 0) {// 若能被整除,则说明不是素数,返回false flag = false; break;// 跳出循环 } } } return flag; }
查看完整描述

4 回答

已采纳
?
JustWannaHugU

TA贡献452条经验 获得超796个赞


同学,你不明白的地方是for (int i = 2; i <= Math.sqrt(a); i++)吗?

这是一个素数运算定理,已经证明出来的,可以拿来直接用

定理: 如果n不是素数, 则n有满足1<d<=sqrt(n)的一个因子d.
证明: 如果n不是素数, 则由定义n有一个因子d满足1<d<n.
如果d大于sqrt(n), 则n/d是满足1<n/d<=sqrt(n)的一个因子.

它的时间复杂度O(sqrt(n)/2), 比普通的素数算法速度提高O((n-sqrt(n))/2).

查看完整回答
反对 回复 2016-09-15
?
椰蓉罐头

TA贡献19条经验 获得超4个赞

判断一个数是不是素数,继续循环flag是true,终止循环flag等于flase
望采纳哦~

查看完整回答
反对 回复 2016-09-15
?
摩诃迦叶

TA贡献146条经验 获得超54个赞


。。。。。 这段代码的注释感觉已经写的很清除了呀。    就是判断一个数是不是素数。 你还想知道什么?

查看完整回答
反对 回复 2016-09-15
  • 4 回答
  • 0 关注
  • 1573 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信