用C++写出能实现下列功能的代码:给定任意一个正整数x(0 < x < 2^32 - 1),打印出x的质因数分解,且质因数采用非降序排序。 比如: 用户在屏幕输入: 180 输出: 180 = 2 * 2 * 3 * 3 * 5 输出结果为一行最后加上换行符。时间复杂度非最优的方案会根据实际的复杂度差距扣分。
时间: 2023-06-07 07:09:45 浏览: 96
以下是代码:
```c
#include <stdio.h>
// 判断是否为质数
int is_prime(int num) {
int i;
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) {
return 0;
}
}
return 1;
}
// 质因数分解
void prime_factorization(unsigned int num) {
int i;
for (i = 2; i <= num; i++) {
if (is_prime(i) && num % i == 0) {
printf("%d", i);
if (num != i) {
printf(" * ");
}
prime_factorization(num / i);
break;
}
}
}
int main() {
unsigned int num;
printf("请输入一个正整数: ");
scanf("%u", &num);
printf("%u = ", num);
prime_factorization(num);
printf("\n");
return 0;
}
```
注意:该代码程序复杂度可能不是最优解,并且输入的数字不能超过 `2^32-1`。
阅读全文