分解质因数
题目描述
给定一个区间 [a,b][a,b],请你求出区间 [a,b][a,b] 中所有整数的质因数分解。
输入描述
输入共一行,包含两个整数 a,ba,b。
2≤a≤b≤1032≤a≤b≤103。
输出描述
每行输出一个数的分解,形如 k=a1×a2×a3⋯(a1≤a2≤a3⋯k=a1×a2×a3⋯(a1≤a2≤a3⋯,kk也是从小到大的)(具体可看样例)
输入输出样例
示例
输入
3 10
输出
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
运行限制
- 最大运行时间:1s
- 最大运行内存: 128
代码注释:
cpp
#include <iostream>
using namespace std;
void factorize(int n) {
cout << n << "="; // 输出当前数字,如 "12="
if (n == 1)
{ // 特殊处理 1
cout << "1";
return;
}
for (int p = 2; p <= n; p++) { // 从 2 开始试除
int count = 0; // 记录 p 能除几次
while (n % p == 0) { // 如果能整除
count++; // 计数 +1
n /= p; // n 去掉一个 p
}
if (count > 0) { // 如果 p 是 n 的因数
cout << p; // 输出 p
if (count > 1) { // 如果 p 出现多次
cout << "^" << count; // 写成 p^count
}
if (n > 1) { // 如果还没分解完
cout << "×"; // 输出乘号
}
}
}
}
int main() {
int a, b;
cin >> a >> b; // 输入区间 [a, b]
for (int n = a; n <= b; n++) { // 遍历每个数
factorize(n); // 分解并输出
cout << endl; // 换行
}
return 0;
}