C语言初学者的问题,如何求一整数的所有因子之和?

如,12的因子之和为2+2+3=7

对于整数n,采用循环从1到n-1进行检查,如果检测到是n的因数,则将该数累加起来,最后输出结果即可。参考代码如下:

#include <stdio.h>
int main()
{
    int sum=0;
    int n=0; 
    int i,m=0;
    scanf("%d", &n ); //输入一个整数
    if ( n<= 0 ) //只统计正整数
        return -1;
    printf("1"); //最小的因数是1,必然存在
    sum = 1;
    for( i=2;i<n;i++ )
    {
        if ( n%i==0 ) //能整除,是因子
        {
            sum += i ; //累加
            printf("+%d", i ); //输出该因子
        }
    }
    printf("=%d\n", sum ); //输出因子和
    return 0;
}

温馨提示:内容为网友见解,仅供参考
第1个回答  2009-04-14
补充,楼上这个内容是我回答的,刚才没登陆,害我没ID,如果你选我最佳答案,就把分给进我这里
一楼的回答,怎么说到素数了? 楼住没要求素数
mian()
{int n,i,s=0;
scanf("%d",&n); /*输入你要求的数,如你的例题,就应该输入12*/
for(i=1;i<n;i++)
if(n%i==0) s=s+i; /*n%i==0就表示可以整除,然后累加到S里*/
printf("%d",s);
}
第2个回答  2009-04-14
mian()
{int n,i,s=0;
scanf("%d",&n); /*输入你要求的数,如你的例题,就应该输入12*/
for(i=1;i<n;i++)
if(n%i==0) s=s+i; /*n%i==0就表示可以整除,然后累加到S里*/
printf("%d",s);
}
第3个回答  2009-04-14
这是判断素数并且输出分解质因数的代码。楼主稍微修改下就能得到你的要求。
#include<stdio.h>
#include<math.h>
int isSushu(int a)//判断一个数是否是素数
{
int i;
for(i=2;i<=sqrt(a);i++)
{
if(a%i==0)
return 0;
}
return 1;
}
int main()
{
int a;
int i;
printf("Please input your number:");
scanf("%d",&a);
printf("质因数如下:\n");
for(i=2;i<a;i++)
{
if(a%i==0&&isSushu(i))
printf("%d\t",i);
}
return 0;

}本回答被提问者采纳
第4个回答  2019-07-25
这是判断素数并且输出分解质因数的代码。楼主稍微修改下就能得到你的要求。
#include<stdio.h>
#include<math.h>
int
isSushu(int
a)//判断一个数是否是素数
{
int
i;
for(i=2;i<=sqrt(a);i++)
{
if(a%i==0)
return
0;
}
return
1;
}
int
main()
{
int
a;
int
i;
printf("Please
input
your
number:");
scanf("%d",&a);
printf("质因数如下:\n");
for(i=2;i<a;i++)
{
if(a%i==0&&isSushu(i))
printf("%d\t",i);
}
return
0;
}

c语言怎么求数字的因子之和?
在C语言中,你可以通过编写一个简单的程序来接收用户输入的数,并计算其因子之和。以下是一个示例代码:这个程序首先提示用户输入一个正整数。然后,它使用一个for循环从1到用户输入的数字,检查每个数是否是输入数字的因子(如果输入的数可以被这个数整除,那么这个数就是因子)。如果是因子,就把它加...

急!c语言 求一个数所有的因子加起来得到的和.
题目中未确定因子不包括数字T本身。include<stdio.h>int main(){int T;scanf("%d",&T);int c[T],i,a,N=0;for(i=1;i<=T;i++)scanf("%d",&c[i]);for(i=1;i<=T;i++){for(a=1;a<=c[i]\/2;a++)if(c[i]%a==0)N+=a;printf("%d\\n",N);N=0;}return 0;} ...

C语言代码问题?
在这段代码中,sumOfDivisors 函数计算一个整数 num 的所有真因子之和(不包括 num 本身)。在 main 函数中,我们遍历从1到10000的每个整数 m,并计算它的真因子之和 n。然后,我们检查 n 是否小于等于10000,并且 n 的真因子之和是否等于 m。如果这两个条件都满足,则 m 和 n 是一对亲密数...

c语言求一个数的因子之和
if(i>=k) break;\/\/这个时候k已经开始等于自身的根号,或者将要出现和之前k对称的i,引起自身重复故退出 } for(c2++;c2<=N-1;c2++){ fac[c1++]=fac[c2];printf("%s %d\\n","**",fac[c2]);} cp=c1;return s;} int main(int argc, char const *argv[]){ \/* code *\/ int fac...

用C语言:求一个数的因子和(因子不包括自身)
=EOF) { s=1; \/\/如果不需要包含1,可改为s=0 printf("因子列表:%d ",s); for (i=2;i<=n\/2+1;i++) { if(n%i==0) { printf("%d ",i); s+=i; } } printf("\\n

c语言如何输出一个数的所有位的和?
输出该数的各位数字之和的源代码如下:include <stdio.h> int fun(int n){ int i;int sum=0;if(n>1000||n<0){ puts("输入的数字超出范围!"); \/\/ 错误信息提示 } else { for(i=2;i<n;i++) \/\/ 循环遍历n,取出因子,并进行累加 { if(0 == n%i){ sum+=i;} } } return...

用C语言:计算并输出给定整数N的所有因子(不包括1与自身)之和
思路:输入一个数n,接着for循环从2到n-1依次整除n,如果能被整除则累加,最后输出累加和。参考代码:include<stdio.h>int main(){ int n,i,sum=0; scanf("%d",&n); for(i=2;i<n;i++) if(n%i==0) sum+=i; printf("累加和为:%d\\n",sum); return 0;}...

c语言怎么输出一个数的各个数字之和?
在C语言中,可以使用循环和取模运算符(%)来实现这个过程。以下是一个示例代码,演示如何输出一个数的各个数字之和:在这个示例代码中,我们首先定义了一个整数变量num和一个变量sum,用于记录各个数字之和。然后,我们使用scanf函数从标准输入中读取一个整数,并将其存储在num变量中。接下来,我们使用...

...内的所有合数,合数是指一个数等于其诸因子之和的数。
int i,j,k,sum;printf("6—1000内的合数:\\n");for(i=6;i<=1000;i++){ sum=1;for(j=2;j<i;j++){ if(i%j==0){ sum=sum+j;} } if(i==sum){ printf("%d=1",i);for(k=2;k

...n(要求n在100和1000之间),计算并输出整数n的所有因子(?
首先,代码使用scanf函数接收用户输入的一个整数n,如果n不在100到1000之间,则使用while循环要求用户重新输入。然后,使用for循环计算n的所有因子之和。从2开始循环到n-1,如果i是n的因子,则将其加入到变量sum中。最后,使用printf函数输出结果。总体而言,该代码是一个简单的数学计算程序,演示了基本的...

相似回答