分解质因数并降序输出?

C++怎么利用栈实现分解质因数并降序输出?栈的设计算法是void detach(int n)

分解质因数并降序输出的步骤如下:

  • 从2开始,不断尝试将n除以2,3,4,...,直到无法整除为止。
  • 如果一个数x可以整除n,则将x压入栈中,并更新n=n/x。
  • 当无法继续整除时,如果n仍然大于1,则说明剩下的n是一个大于sqrt(n)的质数,也将其压入栈中。
  • 将栈中的元素依次弹出并输出,即可得到分解质因数后的结果(降序排列)。

以下是C++中利用栈实现分解质因数并降序输出的示例代码,其中detach函数负责将n分解质因数并将结果压入栈中:

#include <iostream>
#include <stack>
#include <cmath>

using namespace std;

void detach(int n) {
    stack<int> st;
    int i = 2;
    while (i <= sqrt(n)) {
        if (n % i == 0) {
            st.push(i);
            n /= i;
        } else {
            i++;
        }
    }
    if (n > 1) {
        st.push(n);
    }
    while (!st.empty()) {
        cout << st.top() << " ";
        st.pop();
    }
}

int main() {
    int n;
    cin >> n;
    detach(n);
    return 0;
}

例如,对于输入n=36,程序会输出“3 2 2 ”。