2013-06-25 8 views
-6

Как я могу напечатать премьер из основной функции. Мой код приведен ниже ...Печать булевого массива в Java

public static boolean[] sieve(int n) { 
    boolean[] prime = new boolean[n+1]; 
    Arrays.fill(prime, true); 
    prime[0] = false; 
    prime[1] = false; 
    int m = (int) Math.sqrt(n); 

    for (int i = 2; i < m; i++) { 
     if (prime[i]) 
      for (int k=i*i; k<=n; k+=i) 
       prime[k] = false; 
    } 
    return prime; 
} 
+6

['Arrays # toString (boolean [])'] (http://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html#toString%28double []% 29) –

ответ

1

Похоже, что вы не хотите, чтобы напечатать boolean массив: это мало пользы. Вам нужно распечатать простые числа из Sieve of Eratosthenes, что можно сделать, перечислив индексы, проверив, primes[i] - true, и распечатайте индекс, если он есть.

boolean primes = sieve(100); 
for (int i = 0 ; i <= 100 ; i++) { 
    if (primes[i]) { 
     // This is where you print i or do whatever else you think is appropriate 
    } 
} 
1

Это вы хотите?

public static void getPrime(int n) { 
    boolean[] arr = new boolean[n+1]; 
    for (int i = 0; i < arr.length; i++) { 
     arr[i] = isPrime(i); 
     System.out.println(i + "," + arr[i]); 
    } 

} 

public static boolean isPrime(int i) { 
    if (i == 0) { 
     return false; 
    } 
    for (int j = 2; j < i; j++) { 
     if (i % j == 0) 
      return false; 
    } 
    return true; 
} 

Если вы хотите проверить, от 1 до п число штрихом или вы не можете сделать это следующим образом

public static void getPrime(int n) { 
    for (int i = 0; i < n+1; i++) { 
     System.out.println(i + "," + isPrime(i)); 
    } 

} 

public static String isPrime(int i) { 
    if (i == 0) { 
     return "Not a prime"; 
    } 
    for (int j = 2; j < i; j++) { 
     if (i % j == 0) 
      return "Not a prime"; 
    } 
    return "prime"; 
} 

Если вам нужно только простые числа, вы можете сделать это, как followa

public static void getPrime(int n) { 
    for (int i = 0; i < n+1; i++) { 
     if(isPrime(i)) 
     { 
      System.out.println(i); 
     } 
    } 

} 

public static boolean isPrime(int i) { 
    if (i == 0) { 
     return false; 
    } 
    for (int j = 2; j < i; j++) { 
     if (i % j == 0) 
      return false; 
    } 
    return true; 
} 
+0

Нет. Это хороший алгоритм для вычисления простого числа? –

+0

Если вы хотите найти простые числа от 1 до n, вы можете использовать этот код. Но тогда вы можете упростить следующим образом: public static void getPrime (int n) { for (int i = 0; i