import java.*;
class PrimeNumber
{
public static void main(String[] args)
{
int i,j,k=0,n=205;
for(i=101;i<n;i+=2)
{
for(j=2;j<(int)(Math.sqrt(i)+1);j++) //这里是什么意思?特别是Math.sqrt(i)+1中的+1
{
if(i%j==0)
{
break;
}
}
if(j>(int)Math.sqrt(i)) //这里又是什么意思?
{
System.out.print(i+" ");
k++;
}
if(k%8==0) System.out.print("\n");
}
}
}
------解决方案--------------------------------------------------------
Math.sqrt() 方法的解释是:返回正确舍入的 double 值的正平方根。
求素数完全可以这样写..
- Java code
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了!