通过二维数组为一个数存储质因数

Store prime factor by 2-d array for one number

我正在编写一种方法来存储数字的质因数。 我被要求使用二维数组来存储它的质因数和因数。

public static int[][] getMatrix (long x){
        int[][] matrix =new int[10][2];
        int count;
        for (int i = 2, j = 0; i <=x / 2; i++) {
           count=0;
           while (x % i == 0) {
               x = x/i;
               count++;
           }
           matrix[j][0] = i;

           matrix[j][1] = count;
           j++;
       }
       return matrix;
   }

但是这段代码只将数据存储到数组的第一行。 有人可以帮我更正它或提供其他想法吗? 如果我使用下面的代码输出结果。

for(int row=0;row<b_matrix.length;row++)
        {
            for(int column=0;column<2;column++)
            {
                System.out.print(b_matrix[row][column]+" ");
            }
        }

x=9 我得到了这个:

2 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

x=6 我明白了:

2 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 

如:6

matrix[0][0]=2  matrix[0][1]=1
matrix[1][0]=3  matrix[1][1]=1 //can't store

如:9

matrix[0][0]=2   matrix[0][1]=0//only output the next row when this equals to 0 
matrix[1][0]=3   matrix[1][1]=2

你的逻辑是正确的,除了在 for 循环中 i 应该一直到 x 而不是 x/2 如下,

for (int i = 2, j = 0; i <= x; i++)

getMatrix(60) 的输出:

2   2   
3   1   
4   0   
5   1   
0   0   
0   0   
0   0   
0   0   
0   0   
0   0