C++分解质因数,若是素数直接输出,若有相同的质因数,输出幂的形式,如输入:152,输出(2^3)*19
时间: 2024-12-20 21:29:22 浏览: 20
在C++中分解质因数通常会通过循环和取余操作来实现。下面是一个简单的函数,它会接收一个整数作为输入,然后找出它的所有质因数,并将它们按照指定格式输出:
```cpp
#include <iostream>
#include <vector>
// 判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
// 分解质因数并输出
void primeFactorize(int num) {
std::vector<int> factors;
for (int i = 2; i * i <= num; i++) { // 循环直到i * i大于num
while (num % i == 0) {
factors.push_back(i); // 当i能整除num时,添加到因子列表
num /= i; // 更新num,继续检查下一个较小的因数
}
}
// 如果num是剩余的质因数(即num大于1),可能是最后一个质数
if (num > 1) {
factors.push_back(num);
}
// 输出结果,格式化为"*(pow(i, count))"
std::cout << "(*";
int prev_factor = 1;
for (int factor : factors) {
if (factor != prev_factor) {
std::cout << " (" << factor;
prev_factor = factor;
} else {
std::cout << "^" << factors[factors.size() - 1] << "*"; // 对于相同的质因数,只显示一次
}
}
std::cout << ")";
}
int main() {
int input = 152;
primeFactorize(input);
return 0;
}
```
当你运行这个程序并传入152作为输入,你会得到输出`(2^3)*19`。
阅读全文