用c语言编写函数fun(int n),它的功能是:计算正整数n的所有因子(1和n除外)之和作为函数数值返回。例如:n=120时,函数值为239的代码
时间: 2023-11-22 13:52:05 浏览: 192
以下是用C语言编写函数fun(int n),计算正整数n的所有因子(1和n除外)之和作为函数数值返回的代码:
```
int fun(int n){
int sum = 0;
for(int i=2; i*i<=n; i++){ // 从2遍历到n的平方根
if(n%i == 0){ // 判断i是否为n的因子
sum += i; // 将i加入总和
if(i != n/i){ // 如果i不等于n/i,则n/i也是n的因子
sum += n/i; // 将n/i加入总和
}
}
}
return sum;
}
```
对于输入的参数n=120,调用函数fun(n)返回的值为239。
相关问题
c语言实现:实验六(2016春刘秉权C语言课):编写函数void fun(int x, int *pp, int *n),它的功能是:求出x的偶数因子,并按从小到大的顺序存放在pp所指的数组中,这些因子的个数通过形参n返回。如,若x中的值为24,则有6个数符合要求,它们是2、4、6、8、12、24。主函数中输入一个小于等于1000的正整数,调用fun函数之后按顺序输出该正整数的所有偶数因子。 输入输出形式如: Input number:512 2 4 8 16 32 64 128 256 512 最后以回车结束。
以下是实现该功能的代码:
```c
#include <stdio.h>
void fun(int x, int *pp, int *n) {
int i;
*n = 0;
for (i = 2; i <= x; i += 2) {
if (x % i == 0) {
pp[*n] = i;
(*n)++;
}
}
}
int main() {
int x, pp[1000], n, i;
printf("Input number:");
scanf("%d", &x);
fun(x, pp, &n);
for (i = 0; i < n; i++) {
printf("%d ", pp[i]);
}
printf("\n");
return 0;
}
```
该程序首先定义了一个名为`fun`的函数,用于求出一个整数的所有偶数因子,并按从小到大的顺序存放在一个数组中。该函数的参数包括一个整数`x`,一个指向数组的指针`pp`和一个指向整数的指针`n`。其中,`pp`指向的数组用于存放偶数因子,`n`用于返回偶数因子的个数。函数内部使用循环遍历从2到`x`之间的所有偶数,如果该偶数是`x`的因子,则将其存放在数组`pp`中,并将`n`的值加1。
在`main`函数中,先读入一个整数`x`,然后调用`fun`函数得到`x`的所有偶数因子,并按顺序输出它们。程序最后需要输出一个回车符,以满足题目要求。
编写函数fun:计算并输出给定整数n的所有因子之和(不包括1与自身)。注意:n的值不大于1000。 例如:n的值为855时,应输出704。
好的,下面是符合要求的函数fun的实现(使用C语言):
```c
void fun(int n) {
int sum = 0;
for (int i = 2; i <= n / 2; i++) {
if (n % i == 0) {
sum += i;
}
}
printf("%d", sum);
}
```
该函数的基本思路是利用循环遍历从2到n/2的所有正整数,判断其是否为n的因子,如果是,则将其累加到sum变量中。最终,函数输出sum的值即可。需要注意的是,因为题目要求不包括1与自身,因此循环的起始值应为2,而不是1。
阅读全文