2009-12-28 50 views
0

我想用方法打印出数组中所有素数。我可以用一个int 来做,但不知道如何从数组中返回某些数字。感谢帮助!打印出数组中的素数

public static boolean isPrime(int [] tab) { 
     boolean prime = true; 
     for (int i = 3; i <= Math.sqrt(tab[i]); i += 2) 
      if (tab[i] % i == 0) { 
       prime = false; 
       break; 
      } 
     for(int i=0; i<tab.length; i++) 
     if ((tab[i]%2 !=0 && prime && tab[i] > 2) || tab[i] == 2) { 
      return true; 
       } else { 
      return false; 
     } 
     //return prime; 

} 

谢谢你们俩。看起来似乎解决:

public static void isPrime(int[] tab) { 
     for (int i = 0; i < tab.length; i++) { 
      if (isPrimeNum(tab[i])) { 
       System.out.println(tab[i]); 
      } 
     } 


    } 

    public static boolean isPrimeNum(int n) { 
     boolean prime = true; 
     for (long i = 3; i <= Math.sqrt(n); i += 2) { 
      if (n % i == 0) { 
       prime = false; 
       break; 
      } 
     } 
     if ((n % 2 != 0 && prime && n > 2) || n == 2) { 
      return true; 

     } else { 
      return false; 
     } 
    } 

回答

2

我建议你分成两种方法是:

  • 一种方法来确定一个单一的数字是否是素迭代
  • 一种方法通过一个数组,调用每个数字的第一个方法,并打印出方法返回值为true的值。

这两个问题整齐地分开。如果你坚持如何做到这一点,请详细说明哪一点你很难找到。 (我假设这是功课,这就是为什么我一直不只是包含的代码。)

0

假设你有:

  • 一个整数数组,有些是素数,有些是不是素数。
  • 用于测试其中一个数字是否为素数的函数。

简单迭代这个数组,并为每个号码:

if (isPrime(n)) { 
    system.out.println(n); 
} 

你可能不希望尝试做多整数一次,一次一个应该是很多简单的代码。