利用栈的算法,质因数分解逆序输出(C++)
时间: 2023-05-26 08:02:48 浏览: 35
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
// 栈初始化
void initStack(Stack* stack) {
stack->top = -1;
}
// 判断栈是否为空
int isEmpty(Stack stack) {
return stack.top == -1;
}
// 入栈
void push(Stack* stack, int num) {
if (stack->top == MAX_SIZE - 1) {
printf("栈已满\n");
return;
}
stack->data[++stack->top] = num;
}
// 出栈
int pop(Stack* stack) {
if (isEmpty(*stack)) {
printf("栈为空\n");
return -1;
}
return stack->data[stack->top--];
}
// 质因数分解
void primeFactorDecompose(int num) {
Stack stack;
initStack(&stack);
int i;
for (i = 2; i <= num; i++) {
while (num % i == 0) {
push(&stack, i);
num /= i;
}
}
while (!isEmpty(stack)) {
printf("%d", pop(&stack));
}
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
primeFactorDecompose(num);
return 0;
}
```