Сохранение простого множителя по 2-му массиву для одного числа - PullRequest
2 голосов
/ 11 октября 2019

Я пишу метод для хранения простого множителя числа. Меня просят использовать двумерный массив для хранения его простого множителя и номера фактора.

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

1 Ответ

0 голосов
/ 11 октября 2019

Ваша логика верна, за исключением того, что в цикле 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   
...