试题 算法提高 分解质因数


资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  给定一个正整数n,尝试对其分解质因数
输入格式
  仅一行,一个正整数,表示待分解的质因数
输出格式
  仅一行,从小到大依次输出其质因数,相邻的数用空格隔开
样例输入
100
样例输出
2 2 5 5
数据规模和约定
  n<=2147483647

#include <iostream>
using namespace std;

int main(){
int n, n2;
cin >> n;
n2 = n;
if(n < 2)return 0; //小于2的数不合法,若n为质数则输出它本身
for (int i = 2; i*i <= n2; i++) //根号n复杂度
{
while (n2%i == 0)
{
n2 = n2 / i;
cout << i;
if (n2 != 1)cout << " ";
}
}
if(n2 != 1) cout << n2; //当n为质数
return 0;
}