资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
给定一个正整数n,尝试对其分解质因数
输入格式
仅一行,一个正整数,表示待分解的质因数
输出格式
仅一行,从小到大依次输出其质因数,相邻的数用空格隔开
样例输入
100
样例输出
2 2 5 5
数据规模和约定
n<=2147483647
解题思路:
这道题目与算法训练里面的素因子去重有异曲同工之妙,素因子去重是找到所有的因子(去重)并相乘,那么这里我只要找到所有的因子不去重放入数组中输出即可,代码如下:
#include<bits/stdc++.h>
using namespace std;
long long a[10000000];
int main() {
long long n;
int index = 0;
cin >> n;
while (n % 2 == 0) {
a[index ++] = 2;
n /= 2;
}
for(int i = 3;i <= sqrt(n * 1.0);i += 2){
while(n % i == 0){
a[index ++] = i;
n /= i;
}
}
if(n > 2){
a[index ++] = n;
}
for (int j = 0; j < index; j ++){
cout << a[j] << " ";
}
return 0;
}