6=1+2+3,1、2、3是6的所有因数,28=1+2+4+7+14,1、2、4、7、14是28的所有因数。我们称6是完数,28也是完数。
一个整数n如果其所有因子(不包含n本身)之和等于n,则称n为完数。 编写程序,输入一个整数n,寻找大于n的那个最小的完数。
例如:
输入
5
输出
6
输入说明:
一个整数n
输出说明:
一个大于整数n,但是离n最近的一个完数
Sample Input
6
Sample Output
28
#include "stdio.h"
int main()
{
int i,j,a,flag=0;
int n;
scanf("%d",&n);
while(1){
n=n+1;
i=n;
a=0;
for(j=2;j<=i;j++)
{
if(i%j==0)
{
a+=i/j;
}
}
if(a==n){
printf("%d",a);
flag=1;
break;
}
}
}
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
/*
完数:所有的因子相加等于这个数本身
6=1+2+3
*/
int i,j,a,b,c;
int n;
printf("请输入n:\n");
scanf("%d",&n);
for(i=n;i>=6;i--)
{
a=0;
//求i对应的所有的因子
for(j=2;j<=i;j++)
{
if(i%j==0)
{
a+=i/j;
}
}
if(i==a){
//该循环语句的作用就是打印结果
for(j=2;j<=i;j++)
{
if(i%j==0)
{
if(i==j){
printf("%d",i/j);
}else{
printf("%d+",i/j);
}
}
}
printf("=%d\n",i);
}
}
printf("最小完数:%d",a);
}