#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
for(int i = 2; i * i <= n; i++) {
while(n % i == 0) {
cout << i << " ";
n /= i;
}
}
if(n > 1) {
cout << n << " ";
}
return 0;
}
importjava.util.Scanner;publicclassMain{publicstaticvoidmain(String[] args){Scanner sc =newScanner(System.in);int n = sc.nextInt();for(int i =2; i * i <= n; i++){while(n % i ==0){System.out.print(i +" ");
n /= i;}}if(n >1){System.out.print(n +" ");}}}
n =int(input())
i =2while i * i <= n:while n % i ==0:print(i, end=' ')
n //= i
i +=1if n >1:print(n, end=' ')
算法及复杂度
算法:试除法进行质因数分解
时间复杂度:
O
(
n
)
\mathcal{O}(\sqrt{n})
O(n) - 只需要尝试到
n
\sqrt{n}
n 的因子