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

//判断一个数是否是素数
	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)是什么意思。不太理解这个代码就求出素数了

编程人生纪
浏览 1537回答 3
3回答

qq_爬大树_0

//判断一个数是否是素数     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

首先素数是约数只有1和他本身的数字,所以小于2的肯定不是素数,另i*i<=n的意思是减少for循环次数,只需要判断i小于等于n 的开方的数字中有n的约数,n 就不是素数了!最后除去n不是素数的情况,剩下的数字肯定就是素数了!
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java