通过二维数组为一个数存储质因数
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
我正在编写一种方法来存储数字的质因数。 我被要求使用二维数组来存储它的质因数和因数。
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