专栏文章

题解:SP10818 FACTCG2 - Medium Factorization

SP10818题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mipaflnh
此快照首次捕获于
2025/12/03 08:47
3 个月前
此快照最后确认于
2025/12/03 08:47
3 个月前
查看原文

题意

这道题要求将一个整数分解为质因数的乘积,并在表达式中包含数字 11。解题的关键在于正确找出所有质因数,并按照要求的格式输出。

思路

采用试除法进行质因数分解。
  • 22 单独处理。
  • 33 开始处理,检查奇数作为可能的质因数。
  • 循环结束后,如果 N>1N>1,说明 NN 本身是一个质数,添加到结果中。
  • 结果中包含数字 11

代码

CPP
#include <bits/stdc++.h>
using namespace std;
int main() {
	int n;
	while(cin >> n) {
		vector<int> v;
		v.push_back(1);
		if (n > 1) {
			while (n % 2 == 0) {
				v.push_back(2);
				n /= 2;
			}
			for (int i = 3; i * i <= n; i += 2) {
				while (n % i == 0) {
					v.push_back(i);//此数符合要求 
					n /= i;
				}
			}
			if (n > 1) {
				v.push_back(n);//说明 n 现在为质数,加入数组 
			}
		}

		cout << v[0]; //结果包含 1 
		for (int i = 1; i < v.size(); i++) {
			cout << " x " << v[i];//输出答案 
		}
		cout << endl;
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...