2015-12-11 26 views
0

我需要迭代和打印素数。此代码工作正常,但如果数字不是素数,它会打印-1。有办法删除-1s?素数递归

public boolean hasNext() { 
    if (position >= end) { 
     return false; 
    } else { 
     position++; 
     return true; 

} 
} 

@Override 
public int next(int a) { 

     for(int i=2;i<a;i++) { 
      if(a%i==0) 

       return -1; 

     } 
     if(a==0||a==1) return -1; 
     return a; 
    } 

主,我需要打印这种方式,这就是为什么我需要INT方法返回素数

while(hasNext()){ 
     System.out.println(next(position)); 
    } 
+1

没有递归这里,它也并不很清楚什么是你想这样做:你试图返回一个素数<一个? – alfasin

+0

这是什么语言,java?请相应地标记您的问题。你的代码在哪里递归? – Bergi

+0

@alfasin是的我想回归素数 – dummy

回答

0

一个自称被说成是递归的方法。

下面是代码以获得质数在递归的方式

public class Prime { 

public static void main(String[] arg) { 
    for(int i = 1; i < 10; i++) { 
     int res = isPrime(i, i -1); 
     if(res == 1){ 
      System.out.println(i +" is a prime number"); 
     } 
     else{ 
      System.out.println(i +" not a prime number"); 
     } 
    } 
} 

static int isPrime(int a, int div) { 
    if(div <= 1) { 
     return 1; 
    } 
    if(a % div == 0) { 
     return -1; 
    } 
    return isPrime(a, div-1); 
} 
} 

编辑

递归代码为素数。

返回数字如果是素

public class Prime 
{ 
    public static void main(String[] args) 
    { 
     for(int i = 1; i <= 10; i++) 
     { 
     if (isPrimeNumber(i) == 1) 
     { 
      System.out.println(i+ " is a prime Number"); 
     } 
     } 
    } 


    public static int isPrimeNumber(int i) { 
     int factors = 0; 
     int j = 1; 

     while(j <= i) 
     { 
      if(i % j == 0) 
      { 
       factors++; 
      } 
      j++; 
     } 
     int flag = 0; 
     if(factors == 2){ 
      flag = 1; 
     } 
     return flag; 

    } 
} 
+0

我需要返回整数 – dummy

+0

@dummy:很好地编辑了代码。请参阅 –

+0

非常感谢,但我只需要一个int方法返回素数 – dummy

0

假设你的问题是,仅打印素数和

  • //你需要从函数返回一个值。 在这种情况下,处理调用者函数中的-1情况,即 if(next(a)!=-1) =>打印a为素数。

  • //你只是想打印的素数,并且可以修改你的函数

    • 重命名功能isPrime和(为黄金和假假真真,否则)返回boolean变量。
    • if(isPrime(a)==true) =>打印a是素数。
+0

注意:您的问题不清楚,因此我们可能无法给您您的要求的确切解决方案。 – thepace

+0

注意:你是对的,因此你不应该提交一个“猜测”作为解决方案:) – alfasin

+0

问题要求解决方案是由两种方式提供的。所以这两个选项同样正确。提交解决方案的唯一原因是帮助用户:) – thepace