日期:2014-05-20 浏览次数:20648 次
public boolean isNumber(int n){ boolean flag = true; //判断是不是素数 for(int i=2; i<n; i++){ //循环除以2 - n之间的数 if(n % i == 0){ //如果能被其中的某一个数整除 flag = false; //将变量改为false } } return flag; //如果返回是true表示是素数,否则就不是素数 }
------解决方案--------------------
看一下API就知道了
public static double sqrt(double a)返回正确舍入的 double 值的正平方根。特殊情况如下:
如果参数为 NaN 或小于 0,那么结果为 NaN。
如果参数为正无穷大,那么结果为正无穷大。
如果参数为正 0 或负 0,那么结果与参数相同。
否则,结果为最接近该参数值的实际数学平方根的 double 值。
参数:
a - 一个值。
返回:
a 的正平方根。如果参数为 NaN 或小于 0,那么结果为 NaN。
for(j=2;j<(int)(Math.sqrt(i)+1);j++) //这里是什么意思?特别是Math.sqrt(i)+1中的+1
因为素数不能被除了1和本本身以外的整数整除,所以这个for循环的作用就是判断i是否能被2--Math.sqrt(i)(一个整数的因子不可能比这个数字更大)之间的整数整除,至于+1的原因是前面用的是小于号,如果是小于等于就不用+1了!