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

一个求素数的方法,里面的代码不懂望解答一下

一个求素数的方法,里面的代码不懂望解答一下

编程人生纪 2017-07-12 21:07:12
//判断一个数是否是素数 public static boolean isPrime(int N) { if (N < 2) return false; for (int i = 2; i*i <=N; i++)  if (N % i == 0) return false; return true; }对于2,不是在if里面是==0,那么为什么还是返回true. 而且对于这个代码(i*i  <= N)是什么意思。不太理解这个代码就求出素数了
查看完整描述

3 回答

已采纳
?
qq_爬大树_0

TA贡献3条经验 获得超1个赞

//判断一个数是否是素数
    public static boolean isPrime(int N) {
        if (N < 2) return false;//比二小的不是素数,返回false
        for (int i = 2; i*i <=N; i++) //定义一个int i=2,如果满足i*i<=N则执行循环,否则跳出循环,每次执行完循环执行i++
            if (N % i == 0) return false;//如果能整除一个非1整数则不是素数
            return true; //这是循环体外,如果执行完循环没有没返回false就能执行到这,返回ture     
    }

至于为什么只要 i*i<=N 的 i 的范围内就能确定不是素数,假设有两个整数x,y相乘等于N,并且 i*i>N,那么可以确定x和y中至少有一个小于i,那么只要确认小于 i 的任何整数都不能被整除,也就确认了没有任何一个x*y=N能够成立,则N为素数


查看完整回答
反对 回复 2017-07-13
?
精慕门9254224

TA贡献167条经验 获得超46个赞

首先素数是约数只有1和他本身的数字,所以小于2的肯定不是素数,另i*i<=n的意思是减少for循环次数,只需要判断i小于等于n 的开方的数字中有n的约数,n 就不是素数了!最后除去n不是素数的情况,剩下的数字肯定就是素数了!

查看完整回答
反对 回复 2017-07-12
  • 3 回答
  • 0 关注
  • 1536 浏览

添加回答

举报

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