描述
功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )
输入描述:
输入一个整数
输出描述:
按照从小到大的顺序输出它的所有质数的因子,以空格隔开。
这题用递归比较好做:
#include <iostream>
#include <cmath>
using namespace std;
void printPrime(int num) {
bool notfind = true;
int last = num;
for (int prime = 2; prime <= floor(sqrt(num)); prime++) {
if (num % prime == 0) {
cout << prime << ' ';
notfind = false;
num /= prime;
break;
}
}
if (notfind) {
cout << last << " ";
} else {
printPrime(num) ;
}
}
int main() {
int num;
cin >> num;
printPrime(num);
}
重点是时间复杂度的细节,需要理解最大质因数小于平方根