带计数器的独特分解

Unique factorization with counter

我正在尝试在 JAVA 中构建一个程序,它使用唯一因式分解定理。 我的意思是,从用户那里得到一个大于 1 的数字,然后用一个计数器打印所有唯一的因式分解。

例如,对于 100,输出应该是

2 2

5 2

因为 100=2*2*5*5

对于 23,输出应该是

23

如果输入为 6,则输出为

2
3

最后一个例子,对于 8112,输出应该是

2 4
3
13 2

到目前为止,我实现了一个代码,它给出了第一列并纠正了素数。但是当计数器> 1打印第二列时我没有成功计数。

我的代码如下:

int n = scanner.nextInt();
    int num = 2;
    while (num <= n) {
        int i = 2;
        boolean isPrime = true;
        while (i < num && isPrime) {
            if (num % i == 0) {
                isPrime = false;
            }
            i++;
        }
        if (isPrime) {
            int counter = 1;
            if (n % num == 0) {
                System.out.println(num);
            }
        }
        num++;
    }

知道我遗漏了什么吗?

您的counter尚未实施。

int n = scanner.nextInt();
int num = 2;
while (num <= n) {
    int i = 2;
    boolean isPrime = true;
    while (i < num && isPrime) {
        if (num % i == 0) {
            isPrime = false;
        }
        i++;
    }
    if (isPrime) {
        int counter = 0;
        while (n >= num && n % num == 0) {
            counter++;
            n /= num;
        }
        if (counter == 1) {
            System.out.println(num);
        }
        else if (counter > 1) {
            System.out.println(num + " " + counter);
        }
    }
    num++;
}

找到号码后,还要继续寻找那个的计数器。以下是我的解决方案。

            int ounter = 0;
            if (n % num == 0) {
                System.out.print(num);
                int n1 = n;
                while(n1%num == 0) {
                    ounter ++;
                    n1 = n1/num;
                }
                if(ounter != 1) {
                    System.out.println(" "+ounter);
                }
            }