求1000之内的所有完数

Alex5111985 2008-02-25 08:20:00
关于求1000之内的所有完数,折腾半天还是没弄正确。

main()
{
int n,m,sum;
for(n=1;n<=1000;n++)
{
sum=0;
for(m=1;m<=n/2;m++)
{
if(n%m==0) sum+=m;
}

if(n==sum) printf("%d\n",n);
}

getch();
}

这样得到的结果是6,28,496。我不知道正确答案是什么,但28明显不是。
网上查了几个答案,结果都是6,28,496,汗~~~
正确答案是什么?代码该怎么改?
...全文
2725 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
duduleopard 2010-03-19
  • 打赏
  • 举报
回复
学习了!
zhu833 2008-02-26
  • 打赏
  • 举报
回复
学习就有进步.
Alex5111985 2008-02-25
  • 打赏
  • 举报
回复
也谢谢冰矿哈哈
Alex5111985 2008-02-25
  • 打赏
  • 举报
回复
额~~~~~~~~~~~~~~~~
只能说我好傻~~~
谢谢星羽。
冰矿 2008-02-25
  • 打赏
  • 举报
回复

Enter a integer: 1000
6 its factors are: 1,2,3
28 its factors are: 1,2,4,7,14
496 its factors are: 1,2,4,8,16,31,62,124,248
请按任意键继续. . .
冰矿 2008-02-25
  • 打赏
  • 举报
回复

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a,i,j;
int sum;
printf("Enter a integer: ");
scanf("%d",&a);
for(i = 1; i <= a; i++)
{
sum = 0;
for(j = 1; j <= i/2; j++)
{
if(i%j == 0) sum+=j;
}
if(i == sum)
{
printf("%d its factors are: 1",i);
for(j = 2; j <= i/2; j++)
if( !(i%j) )
printf(",%d",j);
printf("\n");
}
}

system("PAUSE");
return 0;
}

来晚了。。。
星羽 2008-02-25
  • 打赏
  • 举报
回复

- -打印少了个空格

#include "stdio.h"
#include "conio.h"

int main()
{
int n, m, sum;

for (n = 1; n <= 1000; n++)
{
sum = 0;

for (m = 1; m <= n / 2; m++)
if (n % m == 0)
sum += m;

if (n == sum)
{
printf("%d its factors are ", n);
for (m = 1; m <= n / 2; m++)
if (n % m == 0)
printf("%d,", m);
printf("\b \n");
}
}

getch();

return 0;
}



星羽 2008-02-25
  • 打赏
  • 举报
回复

运行结果

6 its factors are1,2,3
28 its factors are1,2,4,7,14
496 its factors are1,2,4,8,16,31,62,124,248


星羽 2008-02-25
  • 打赏
  • 举报
回复


#include "stdio.h"
#include "conio.h"

int main()
{
int n, m, sum;

for (n = 1; n <= 1000; n++)
{
sum = 0;

for (m = 1; m <= n / 2; m++)
if (n % m == 0)
sum += m;

if (n == sum)
{
printf("%d its factors are", n);
for (m = 1; m <= n / 2; m++)
if (n % m == 0)
printf("%d,", m);
printf("\b \n");
}
}

getch();

return 0;
}

Alex5111985 2008-02-25
  • 打赏
  • 举报
回复
TO icemine:
不好意思,可能我没表达清楚。
原题是说找出1000之内的所有完数,并按下面格式输出其因子:
6 its factors are 1,2,3。
所以不是单求自己输入的数字的因子。
myullian 2008-02-25
  • 打赏
  • 举报
回复
第一次看到完数的概念,学习
冰矿 2008-02-25
  • 打赏
  • 举报
回复
回六楼

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
int a,i;
printf("Enter a integer:");
scanf("%d",&a);
printf("%d its factors are: ",a);
for(i = 1; i < a; i++)
if( !(a%i) )
printf("%d ",i);
printf("\n");

system("PAUSE");
return 0;
}
Alex5111985 2008-02-25
  • 打赏
  • 举报
回复
我是在做谭浩强C程序设计第六章的题目,
按题意要求,输出格式是“ 6 its factors are 1,2,3 ”
要满足这样要求,一定要用到数组么?
有没有不用数组的办法?
因为第六章为止还没讲到数组,所以想问下。
Alex5111985 2008-02-25
  • 打赏
  • 举报
回复
啊,28真的也是啊?
那是我把完数的概念没弄清楚。
以为因数应该是不可再分解的数字。28的因数为1,2,2,7
。。。。。。。。
看来是我把概念给弄糊涂了,呵呵。
那因数也就是所有可以被原来的数字整除的数字了?
见笑了,呵呵~~~
冰矿 2008-02-25
  • 打赏
  • 举报
回复
28是呀:
28 = 1+2+4+7+14
yisea123 2008-02-25
  • 打赏
  • 举报
回复
完数是所有除自身之外的因数之和等于自身的数
6的因数有1,2,3,6,而6=1+2+3
28的因数有1,2,4,7,14,28,而28=1+2+4+7+14,也是完数
独孤过儿 2008-02-25
  • 打赏
  • 举报
回复
第一次听到这个词...
lockhall 2008-02-25
  • 打赏
  • 举报
回复
什么是完数>?

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧