有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

用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;
}

共 (2) 个答案

  1. # 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
        }
    }
    
  2. # 2 楼答案

    这是你想要的吗

    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";
    }
    

    如果你只需要素数,你可以做如下

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