分解質因數
題目描述
給定一個區間?[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?
代碼注釋:?
#include <iostream>
using namespace std;void factorize(int n) {cout << n << "="; // 輸出當前數字,如 "12="if (n == 1) { // 特殊處理 1cout << "1";return;}for (int p = 2; p <= n; p++) { // 從 2 開始試除int count = 0; // 記錄 p 能除幾次while (n % p == 0) { // 如果能整除count++; // 計數 +1n /= p; // n 去掉一個 p}if (count > 0) { // 如果 p 是 n 的因數cout << p; // 輸出 pif (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;
}