2015-04-23 78 views
2

以下是我的java代码打印'n'素数no.s但我想修改它,以便我可以按相反的顺序打印备用素数。java代码以相反的顺序打印备用素数

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

你实现复素数现在在测试中? hehehe –

+0

我被问到了这个测试,我很好奇知道它的解决方案 –

回答

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 
1

您可以在ArrayList<Integer>

毕竟值设置添加的每个数字,只是扭转名单。

Collections.reverse(list); 
+0

好吧,但任何想法,我如何打印备用素数 –

+0

只要有条件地添加到列表... –

+0

我的建议:SO不是学习网站,你有没有尝试过吗? –