java - 使用堆栈进行质因数分解

标签 java stack

我正在尝试编写一个程序,该程序使用堆栈按降序打印正整数的质因数。

但是,我不确定我所做的是否完全正确。

这是我到目前为止所拥有的代码。目前我已经完成了质因数分解,但是 Stack 部分让我困惑。

import java.util.Stack; // Initialize Stacks

public class PrimeFactorization {

    public static void printPrimeNumbers(int prime) {
        Stack<Integer> stack = new Stack<Integer>(); //create stack
        int n = 0;

        for (int i = 0; i < n; i++) { //intialize for loop to check each letter
            stack.push(n);
        }

        while (!stack.isEmpty()) {
            n += stack.pop();
        }

        for (int i=0; i <= prime; i++) {
            n = 0;
            while (prime % i == 0) {
                prime /= i;
                n++;
            }

            if (n != 0) {
                for (int j = n; j > 0; j--) {
                    System.out.print(i);
                    if (prime != 1) {
                        System.out.print("*");
                    }
                }
            }
        }
    }

    public static void main(String[] args) {
        printPrimeNumbers(1)
    }
}

最佳答案

您基本上可以找到素数并将它们添加到堆栈中,然后打印直到堆栈上没有元素:

public static void main(String[] args) {
    printPrimeFactors(189); // prints 7 3 3 3
}

public static void findPrimeNumbers(int n, Stack<Integer> stack) {

    for (int i = 2; i <= n; i++) {
        if (n % i == 0) {
            stack.add(i);
            n /= i;
            i--;
        }
    }
}

public static void printPrimeFactors(int n){
    if(n > 1){
        Stack<Integer> stack = new Stack<Integer>();
        findPrimeNumbers(n, stack);
        while (!stack.isEmpty()) {
            System.out.print(stack.pop()+ " ");             
        }   
    }
}

关于java - 使用堆栈进行质因数分解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43837303/

相关文章:

java - org.hibernate.criterion.Restrictions 的 MYSQL 表列名称中的下划线抛出异常

java - JAVA中子资源依赖问题

java - 为什么ListView是空的?

java - 使用 javafx 的基本计算器 : how to reset or restart

c - 指向结构体的指针 C 中堆栈数据结构的实现

c - C中的函数压入栈

java - 可参数化的 JSR-303 验证值

java - 如何自定义log4j输出

linux - 为什么我们会遇到段错误而不是页面错误?

c - 为什么堆栈不传递命令行的输入