Java 用二维数组存储一个数的素数因子

Java 用二维数组存储一个数的素数因子,java,arrays,prime-factoring,Java,Arrays,Prime Factoring,我正在写一个方法来存储一个数的素数因子。 我被要求使用二维数组来存储它的素因子和因子数 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) {

我正在写一个方法来存储一个数的素数因子。 我被要求使用二维数组来存储它的素因子和因子数

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;
   }
x=6我得到了这个:

2 0 3 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
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++)

哦,我知道了,方法中x的值改变了,因为
x=x/I,不需要除以2,非常感谢。
for (int i = 2, j = 0; i <= x; i++)
2   2   
3   1   
4   0   
5   1   
0   0   
0   0   
0   0   
0   0   
0   0   
0   0