酷代码 AI
菜单
服务商

质因数分解 任意输入一个正整数,要求把它拆成质因子的乘积。如 10=2*5 20=2*2*5 5=5 输入 一个数n 输出 形如:n=质数1*质数2*质数3…… 质数序列按照非下降顺序排列(c++)

```cpp #include <iostream> void primeFactorization(int n) { std::cout << n << "="; int divisor = 2; bool first = true; while (n > 1) { if (n % divisor == 0) { if (!first) { std::cout << "*"; } std::cout << divisor; first = false; n /= divisor; } else { divisor++; } } std::cout << std::endl; } int main() { int n; std::cin >> n; primeFactorization(n); return 0; } ``` 代码解释: 1. `primeFactorization` 函数:此函数接收一个整数 `n` 作为参数,用于对其进行质因数分解。 - 首先输出 `n` 和等号。 - 初始化 `divisor` 为 2,作为最小的质数开始尝试。 - `first` 布尔变量用于标记是否为第一个质因数,以控制是否输出乘号。 - 使用 `while` 循环,只要 `n` 大于 1,就继续分解。 - 若 `n` 能被 `divisor` 整除,输出 `divisor`,并更新 `n` 为 `n / divisor`,同时更新 `first` 为 `false`。 - 若不能整除,`divisor` 加 1。 2. `main` 函数: - 从标准输入读取一个整数 `n`。 - 调用 `primeFactorization` 函数对 `n` 进行质因数分解。 复杂度分析: - 时间复杂度:$O(\sqrt{n})$,因为在最坏情况下,需要尝试到 $\sqrt{n}$ 才能完成分解。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 [2026-02-06 15:07:23 | AI问答 | 462点数解答]

相关提问
发财导航,免费问AI
实用工具查看更多