c语言计算正整数n的分解相加
时间: 2024-10-07 09:08:00 浏览: 47
C语言编程训练:递归-整数分解为若干个整数之和
在C语言中,要计算一个正整数n的分解并求和其质因数,你需要编写一个函数来找到所有小于等于sqrt(n)的质数因子,并将它们相乘得到分解后的和。以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <math.h>
// 判断是否为质数
int isPrime(int num) {
if (num <= 1)
return 0;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return 0;
}
return 1;
}
// 计算因子分解和
int factorSum(int n) {
int sum = 0;
for (int i = 2; i * i <= n; i++) { // 只需检查到sqrt(n),因为大于这个值的因子都会成对存在
while (n % i == 0 && isPrime(i)) {
sum += i; // 当i是质数并且能被n整除时,累加i
n /= i; // 更新n为除以i后的值
}
if (n > 1 && isPrime(n)) { // 如果n还有剩余且是质数,则将其添加到和中
sum += n;
}
}
return sum;
}
int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);
int result = factorSum(n);
printf("正整数 %d 的分解相加结果为:%d\n", n, result);
return 0;
}
```
阅读全文