import java.math.*;
.......
int i;
i=3;//把i赋值先
BigInteger bigint=new BigInteger(String.valueOf(i));//是否是素数,就看此处的i
boolean isPrime=bigint.isProbablePrime(i);//这里的i可以随意填,只要是int就行

解决方案 »

  1.   

    int 型的数还可以,要是给一个极大的数,这样的函数是不可想象的。
      

  2.   

    按照z_yheart(年轻的心)的方法一个一个查还可以,
    但我试过如果查1到10000的数据中有哪些是素数就会死机!
    我根据一个C语言改编成以下的程序就不会有这种情况!
    是为什么呢?          Vector v=new Vector();
      v.add(new Integer(2));
      v.add(new Integer(3));
      for(int i = 1; i <=10000; i++ )
      {
        boolean b = true;
        for(int j = 0; j<v.size(); j++)
        {
          int temp=((Integer)v.get(j)).intValue();
          if ( (i==2) || (i==3) )
      {
         break;
      }
      if( (i % temp==0) || (i==1) )
      { 
         b = false; 
        break;
      }
        }
        if( b==true )
                {  
    String s=String.valueOf(i);
    System.out.println(s);
                }
     }
       
      

  3.   

    用下面的类应该可以import java.lang.Math;
    import java.util.*;
    public class PrimeNumber {
      private Vector primeVec;
      final static int FIRST_PRIMENUMBER=2;
      public PrimeNumber() {
      primeVec=new Vector();
      primeVec.addElement(new Integer(2));
      }
      public PrimeNumber(Vector vec)
      {
        this.primeVec=vec;
        this.primeVec.addElement(new Integer(2));
      }
      boolean isPrimeNum(int num)
      {
        if(num==2)
        return true;
        int lastPrime;
        int length=primeVec.size();
        for(int i=0;i<length;i++)
        {
          lastPrime=((Integer)primeVec.elementAt(i)).intValue();
          if(num%lastPrime==0)
              {
                return false;
              }
            else
            continue;
        }
        return true;
      }
    }
      

  4.   

    在if(num==2)前面还要加
    if(num==1)
        return false;
      

  5.   

    在if(num==2)前面还要加
    if(num<2)
        return false;
      

  6.   

    不愿意思,算法错误,下面给出新算法boolean isPrimeNum(int num)
      {
        if(num<2)
        return false;
        if(num==2)
        return true;
        if(num%2==0)
        return false;
        double sqrtNum=Math.sqrt((double)num);
        for(int i=3;i<=sqrtNum;i=i+2)
          {
            if(num%i==0)
            return false;
          }
          return true;
      }
      

  7.   

    系统不允许连续发贴,只好先用另外用户登陆。不好意思,算法错误,下面给出新算法boolean isPrimeNum(int num)
      {
        if(num<2)
        return false;
        if(num==2)
        return true;
        if(num%2==0)
        return false;
        double sqrtNum=Math.sqrt((double)num);
        for(int i=3;i<=sqrtNum;i=i+2)
          {
            if(num%i==0)
            return false;
          }
          return true;
      }
      

  8.   

    谢谢z_yheart(年轻的心) 
    但是为什么要用
    double sqrtNum=Math.sqrt((double)num);
    这句呢?    
      

  9.   

    一个合数能够分解的话,一定存在两个因子。一个大于Num的平方根,一个小于Num的平方根