gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 13:14:13 25 4
gpt4 key购买 nike

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

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

这是我到目前为止所拥有的代码。目前我已经完成了质因数分解,但是 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com