相对素数矩阵

时间:2015-02-18 19:11:33

标签: java matrix boolean

我想创建一个NxN矩阵,它从命令行矩阵中取N,使得 如果i和j是相对的,则行i和列j中的元素(1≤i,j≤N)是“*”(星形) 素数(即GCD(i,j)= 1)和“”(空格)否则。行号应该是 印在每一行的末尾。

public static boolean[][] relativelyPrime(int N) {
boolean[][] array = new boolean [N+1][N+1];
for (int i = 0; i < array.length; i++) {
    for (int j = 0; j < array.length; j++) {
        if ( 1 <= i && i <= N && 1 <= j && j <= N) {
           if (gcd(i,j) == 1){
              return array;
           }
        }
    }
}
return array;
}

public static void main(String[] args) {
int N = Integer.parseInt(args[0]);
boolean[][] matrix = relativelyPrime(N);
for (int i = 0; i < matrix.length; i++) {
    for (int j = 0; j < matrix.length: j++) {
        if (1 <= i && i <= N && 1 <= j && j <= N) {
           if (gcd(i, j) == 1) { System.out.println("*" + i);
            }
           else { System.out.println(" " + i);
            }
         }
     }
 }

我正在尝试创建一个如下所示的矩阵:

* * * * * * * * * * 1
*   *   *   *   *   2
* *   * *   * *   * 3
*   *   *   *   *   4
* * * *   * * * *   5
*       *   *       6
* * * * * *   * * * 7
*   *   *   *   *   8
* *   * *   * *   * 9
*   *       *   *   10

但即将到来

*1
*1
*1
*1
*1
*1
*1
*1
*1
*1
*2
 2
*2
 2
.
.
.

我如何将其放入矩阵

1 个答案:

答案 0 :(得分:1)

您应该使用System.out.print代替System.out.println,如下所示:

    public static void main(String[] args) {
    int N = 11;
    boolean[][] matrix = relativelyPrime(N);
    for (int i = 0; i < matrix.length; i++) {
        for (int j = 0; j < matrix.length; j++) {
            if (1 <= i && i <= N && 1 <= j && j <= N) {
               if (gcd(i, j) == 1) { System.out.print("*");
                }
               else { System.out.print(" ");
                }
             }
         }
        System.out.println(i);
     }
    }

在这种情况下,它会在第一行给你零,以消除这种使用额外的if语句:

         }
       if(i!=0)
        System.out.println(i);
   }