求教

VisualMind 2002-07-03 06:36:29
各位高手,我这里有一个问题。
我在学习语言的时候(C++)碰到一道题,求“完数”
完数的定义是这样的:
一个数恰好等于它的因子的和。
比如:6分解为1*2*3,而恰好1+2+3=6
我对其不慎理解,比如,一定是质因子吗?
请各位看官给出一个求出1000以内完数的程序,好吗?
谢谢!
...全文
39 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
VisualMind 2002-07-06
  • 打赏
  • 举报
回复
谢谢!
  • 打赏
  • 举报
回复
满足和相等就行了!
LeeMaRS 2002-07-03
  • 打赏
  • 举报
回复
是你的理解失误了.

6的因子有 1 2 3.这些因子的和是6.
而不是 6=1*2*3 且 6=1+2+3.

同理

28的因子有1 2 4 7 14.这些因子的和是28.
而不是 28=1*2*4*7*14 且 28=1+2+4+7+14

不是把28分解质因数~~~!
VisualMind 2002-07-03
  • 打赏
  • 举报
回复
首先非常感谢你。
我试了一下你的程序,输出:6、28、496
可是:
1+2+4+7+14=28,但是:1*2*4*7*14显然不等于28
也不知道是不是我对完数的理解不正确
  • 打赏
  • 举报
回复
int sum (int n)
{
int i,r_sum=0;
for (i=1;i<n;i++)// 循环算到(n+1)/2就行了
if (n % i==0)
r_sum+=i;
return r_sum;
}
IUSR 2002-07-03
  • 打赏
  • 举报
回复
这个不就是《C程序设计》里的习题么
LeeMaRS 2002-07-03
  • 打赏
  • 举报
回复
刚才的有BUG.1不应该算的.再改成这样:
#include "iostream"

using namespace std;

int sum (int);

int sum (int n)
{
int i,r_sum=0;
for (i=1;i<n;i++)
if (n % i==0)
r_sum+=i;
return r_sum;
}

void main()
{
int i;
for (i=1;i<1000;i++)
if (i==sum(i))
cout << i << " ";
cout << endl;
}
LeeMaRS 2002-07-03
  • 打赏
  • 举报
回复
#include "iostream"

using namespace std;

int sum (int);

int sum (int n)
{
int i,r_sum=1;
for (i=2;i<n;i++)
if (n % i==0)
r_sum+=i;
return r_sum;
}

void main()
{
int i;
for (i=1;i<1000;i++)
if (i==sum(i))
cout << i << " ";
cout << endl;
}
LeeMaRS 2002-07-03
  • 打赏
  • 举报
回复
不一定是质因子呀.1就不是质因子,不是么?

33,028

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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