题目描述
将一个正整数分解质因数,例如,输入90,输出2 3 3 5。
输入
输入一个正整数n(2<=n<=2000)。
输出
从小到大输出n的所有质因子,每两个数之间空一格。
样例输入 Copy
20
样例输出 Copy
2 2 5
提示
注意,最后一个数后面没有空格!!
#include <iostream>
#include <iomanip>
#include <math.h>
using namespace std;
struct Outnum
{
int outn; //质因子
Outnum* next;
};
int main() {
int n;
cin >> n;
Outnum *head;
Outnum *t;
Outnum *f;
f = new Outnum();
head = f;
t = f;
int i = 2;
for ( i ;i <= n;i++) {
if (n % i == 0) {
f = new Outnum();
f->outn = i;
t->next = f;
t = t->next;
n = n / i;
i = 1;
}
}
head = head->next;//把链表中的第一个无数据的扔掉
while (head != nullptr) {
cout << head->outn ;
if (head->next != nullptr) { //判断是否为最后一个,若不是则不输出空格
cout << " ";
}
head = head->next;
}
}