蓝桥杯 分解质因数 C++算法提高 HERODING的蓝桥杯之路

资源限制
时间限制: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;
} 

猜你喜欢

转载自blog.csdn.net/HERODING23/article/details/106724009