我正在编写一种方法来存储数字的质因数。 我被要求使用二维数组来存储它的质因数和因数。
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
关于java - 通过二维数组为一个数存储质因数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58343161/