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