Java代码以相反顺序打印交替质数

3
以下是我的Java代码,用于打印“n”个质数,但我希望修改它,以便我可以按相反顺序打印替代质数。
import java.util.Scanner;

class PrimeNumberDemo
{
   public static void main(String args[])
   {
      int n;
      int status = 1;
      int num = 3;
      //For capturing the value of n
      Scanner scanner = new Scanner(System.in);
      System.out.println("Enter the value of n:");
      //The entered value is stored in the var n
      n = scanner.nextInt();
      if (n >= 1)
      {
         System.out.println("First "+n+" prime numbers are:");
         //2 is a known prime number
         System.out.println(2);
      }

      for ( int i = 2 ; i <=n ;  )
      {
         for ( int j = 2 ; j <= Math.sqrt(num) ; j++ )
         {
            if ( num%j == 0 )
            {
               status = 0;
               break;
            }
         }
         if ( status != 0 )
         {
            System.out.println(num);
            i++;
         }
         status = 1;
         num++;
      }         
   }
}

你现在正在测试中吗?呵呵呵 - Deividi Cavarzan
我在一次测试中被问到这个问题,我非常好奇知道它的解决方案。 - Kunal Chaubal
3个回答

1
你可以将每个数字添加到 ArrayList<Integer> 中。
当所有值都设置好后,只需反转列表即可。
Collections.reverse(list); 

我的建议是:SO不是一个学习网站,你尝试过其他的东西了吗? - Deividi Cavarzan

1
根据您的代码,我进行了一些修改,以下是我如何以相反的顺序实现交替质数。
public static void main(String args[])
   {
      int n;
      int status = 1;
      int num = 3;
      List<Integer> primeNumberList=new ArrayList<Integer>();
      //For capturing the value of n
      Scanner scanner = new Scanner(System.in);
      System.out.println("Enter the value of n:");
      //The entered value is stored in the var n
      n = scanner.nextInt();
      if (n >= 1)
      {
         System.out.println("First "+n+" prime numbers are:");
         //2 is a known prime number
         System.out.println(2);
         primeNumberList.add(2);
      }

  for ( int i = 2 ; i <=n ;  )
  {
     for ( int j = 2 ; j <= Math.sqrt(num) ; j++ )
     {
        if ( num%j == 0 )
        {
           status = 0;
           break;
        }
     }
     if ( status != 0 )
     {
        System.out.println(num);
        primeNumberList.add(num);
        i++;
     }
     status = 1;
     num++;
  }

  //reversing collection 
  Collections.reverse(primeNumberList);
   System.out.println("\n");
  System.out.println("Alternate Prime numbers in reverse order \n");
  for(int k=0;k<primeNumberList.size();k++){
     if((k%2)==0)
          System.out.println(""+primeNumberList.get(k));
  }

}

结果输出

Enter the value of n:
10
First 10 prime numbers are:
2
3
5
7
11
13
17
19
23
29


Alternate Prime numbers in reverse order 

29
19
13
7
3

0

我会这样做。


import java.util.Scanner;
class AlternatePrimeNumbers
{
    static Scanner input = new Scanner(System.in);
    public static void main(String[] args)
    {
        Main obj = new Main();
        System.out.print("Enter the value of n :- ");
        int num = input.nextInt();
        System.out.println("Alternate Prime numbers in reverse order upto "+num+" :- ");
        obj.alternatePrimeNumbers(num);
    }
}

class Main
{
    public void alternatePrimeNumbers(int n)
    {
        int i;
        boolean prime,flag=true;
        for(i=n; i>=1; i--)
        {
            prime = checkPrime(i);
            if(prime)
            {
                if(flag)
                {
                    System.out.print(i+" ");
                    flag = false;
                }
                else if(flag==false)
                    flag = true;
            }
        }
    }

    public boolean checkPrime(int n)
    {
        int i;
        boolean prime=true;
        for(i=2; i<=n/2; i++)
        {
            if(n%i==0) //condition for non-prime numbers
            {
                prime = false;
                break;
            }
        }
        return prime;
    }
}



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接