帮我做这题啦,我明天就考了,这题肯定会考的.
救命啊!!!设计方法boolean prime(int n),用来判断数n是否为素数,若为素数,返回true;若不是素数,返回false;若n<0,抛出ArgumentOutOfBound异常.

解决方案 »

  1.   

    boolean prime(int n){
    if(n<0)
    throw new ArgumentOutOfBound();
    boolean re = true;
    for(int i=2;i<=n/2;i++)
    {
    if(n%i==0){
    re = false;
    break;
    }
    }
    return re;}
      

  2.   

    //一个数n为素数,则在2-(根号n)之间,不存在任何一个非平凡因子
    class ArgumentOutOfBoundException extends Exception
    {
    ArgumentOutOfBoundException()
    {
             System.out.println("ArgumentOutOfBound!");
    }
    }
    class Sieve
    {
    static  boolean prime(int n) throws ArgumentOutOfBoundException
    {
     boolean b=true;
         
    if(n<0)
    {
    throw  new ArgumentOutOfBoundException(); 
     
      }
     if(n>0)
    {
              for(int i=2;i<=Math.sqrt(n);i++)
    {
       if((n%i)==0)
    {
       b=false;
           break;
    }
         }

    }
        
        return b;
    } public static void main(String[] args)
    {
           try
           {
    System.out.print("Please input a number as your wish:");
    int number=System.in.read();
            boolean bl=prime(number);
    System.out.println(bl);
           }
           catch (Exception e)
           {
     e.printStackTrace();
           }
    }
    }
      

  3.   

    问一下,要是循环到(int)Math.sqrt(n),效率会高吗?
      

  4.   

    到Math.sqrt不一定效率就高
    做开方的运算很慢的
      

  5.   

    boolean isPrimeNumber(int n) {
          if (n < 0) {
    throw new ArgumentOutOfBound()
    }
    if (n < 3) {
    return false;
    }int boundary = (int)Math.sqrt(n);
    for (int i = 2; i <= boundary; i++) {
    if ((n % i) == 0) {
    return false;
    }
    }return true;
    }
      

  6.   

    private static boolean isPrimeNumber(int n) {
      if (n <= 0) {
        throw new ArgumentOutOfBound();
      } else if (n == 1) {
        return false;
      } else if (n == 2) {
        return true;
      } else {
        int m = (int)Math.sqrt(n);
        for (int i = 3; i <= m; i += 2) {
          if ((n % i) == 0) {
            return false;
          }
        }
      }
      return true;
    }顺便评论一下:liujun999999 的方法最耗时
    Inhibitory 的方法,如果为2时就错了。
      

  7.   

    to: ls的ls
    没有搞错吧,2是最小的素数,而且是唯一偶素数。to: ls
    再次说明一下,1不是素数,2才是素数。
      

  8.   

    csdn的同仁们,既然楼主已经到这里来求助了,各位就拉他一把吧.呵呵