//判断一个数是否是素数
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为素数
精慕门9254224
TA贡献167条经验 获得超46个赞
首先素数是约数只有1和他本身的数字,所以小于2的肯定不是素数,另i*i<=n的意思是减少for循环次数,只需要判断i小于等于n 的开方的数字中有n的约数,n 就不是素数了!最后除去n不是素数的情况,剩下的数字肯定就是素数了!
添加回答
举报
0/150
提交
取消