2014-02-24 27 views
0

我已经编写了一个程序来查找数字是否为素数。Java的独立方法找到素数

该方案有2种方法:

  1. 采取从用户输入作为到数字(存储在数组)

  2. 采取该阵列的每个元素,并找到它是否是素数或没有(这个方法返回类型为boolean

现在我的2 第二方法总是返回true为所有价值。

public static boolean Isprime(int x){ 

    boolean isprime = false; 

    for(int m=2;m<x/2;m++){ 

     int temp = x%m; 
     if(temp == 0){ 
      isprime = false; 
     } 
     else{ 
      isprime = true; 
     } 
    } 
    return isprime; 
} 

编辑:

public static boolean Isprime(int x){ 

    boolean isprime = false; 

    for(int m=2;m<=x/2;m++){ 

     int temp = x%m; 
     if(temp == 0){ 
      isprime = false; 
      break; 
     } 
     else{ 
      isprime = true; 
     } 
    } 
    return isprime; 
} 

P.S - 它正在为9也是如此。

+0

等什么似乎是年轻人的麻烦? –

+0

非常抱歉,我jst解决了这个问题.. 麻烦先前的是,为每5的整数倍数它返回true .. jst谅解休息;在If语句里面.. 在发布我的问题后,我总是会在这里发布我的问题,甚至从我自己:) 谢谢反正:) – user3291928

+0

你试过假装成电脑吗?假设你通过'9',然后它检查是否'9%2 == 0',它不是,所以它将'isprime'设置为true。然后检查它是否为'9%3 == 0',所以它将'isprime'设置为false。然后它检查'9%4 == 0',它不是,所以它将'isprime'设置为true。然后它返回'isprime',这是真的。 – immibis

回答

1

您需要立即跳出for循环,如果它不是一个主要和slighlty修改的方法,您可以遵循以省略一些代码并优化它。

public static boolean Isprime(int x){ 
    boolean isprime = true; 

    for(int m=2;m<=Math.sqrt(x);m++){ 

     int temp = x%m; 
     if(temp == 0){ 
      isprime = false; 
      break; 
      } 
     } 
    return isprime; 

    } 
+0

另一个小的问题..在我的完整的程序我所提到的主要方法 内的IF 语句(INT A = 0;一 现在,只要找到一个黄金它给我打印为数字“是素数”现在我想添加一个else语句,这将给打印“无prime找到了“如果der不是......但是如果我将它添加到For循环中,那么循环不会继续......(增量在第一次运行时停止)我该怎么办? – user3291928

+0

你需要做的是使用布尔值并在for循环之前将其赋值为false。在你的if(主要)检查中使它成真。在for循环之后,如果它仍然是false,那么检查boolean的值,然后找不到素数。 – Sanjeev

+0

@ Sanjeev,你的代码不会一直工作。检查49作为一个数字。仅供参考,49是非素数 – Aditya