当前位置: 代码迷 >> Java相关 >> 新手,弱弱地问,小弟我的程序里面如何用上Math.sqrt得到的结果不正确呢?求教各路。
  详细解决方案

新手,弱弱地问,小弟我的程序里面如何用上Math.sqrt得到的结果不正确呢?求教各路。

热度:3491   发布时间:2013-02-25 21:47:39.0
新手,,弱弱地问,我的程序里面怎么用上Math.sqrt得到的结果不正确呢??求教各路大虾。。。
我这是求从2到输入数N之间的质数并输出,,,

import java.io.*;


public class I{
public static void main(String[] args)throws IOException{
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String str;

System.out.print("请输入整数:");
str=br.readLine();
int a=Integer.parseInt(str);
for(int i=3; i<=a; i++)
if(prim(i))
System.out.print(i +" ");
}
public static boolean prim(int n){


if(n<=2) return false;
for(int i=2; i<Math.sqrt(n); i++) /*在这个位置用Math.sqrt()得到的结果不对,换为N是正确的,,,求教,,,,*/
if(n%i==0)
return false;
return true;

}

}

------解决方案--------------------------------------------------------
i<Math.sqrt(n); 这地方确实有问题,别如说9,i==2时不能整除,i==3时,9开平方是3,3<3为false,就不会判断余数是否为0了。
其实sqrt方法返回的是double类型,可能的话最好还是用int计算,i*i<=n;
  相关解决方案