Java 素数递归

Java 素数递归,java,recursion,iterator,Java,Recursion,Iterator,我需要迭代和打印素数。这段代码工作正常,但如果数字不是素数,它会打印-1。有没有办法删除-1 public boolean hasNext() { if (position >= end) { return false; } else { position++; return true; } } @Override public int next(int a) { for(int i=2;i<

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

    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;
    }

调用自身的方法称为递归方法

下面是以递归方式获取素数的代码

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);
}
}
公共类素数{
公共静态void main(字符串[]arg){
对于(int i=1;i<10;i++){
int res=isPrime(i,i-1);
如果(res==1){
System.out.println(i+“是素数”);
}
否则{
System.out.println(i+“不是素数”);
}
}
}
静态int-isPrime(int-a,int-div){

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

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

  • //您只需要打印素数,就可以修改您的函数

    • 将函数重命名为isPrime并返回boolean(对于素数为true,否则为false)
    • if(isPrime(a)==true)
      =>打印a为素数

这里没有递归,你想做什么也不是很清楚:你想返回素数吗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;

  }
}