2013-06-25 57 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到檢查n個質數,或者不是你可以,如果你只需要質數如下

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