刚学函数 请教 用函数找出1000以内的所有的“完数”???

klynigel 2004-11-22 05:25:57
我明天上机把我自己写的发上来大家批批。
谢谢!!!
...全文
573 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
greenteanet 2004-11-23
  • 打赏
  • 举报
回复
#include <iostream>
using namespace std;

int main()
{
for(int n=1;n<=1000;n++)
{
int sum=0;
for(int k=1;k<n;k++)
if(n % k == 0)
sum+=k;
if(sum == n)
cout << "n=" << n <<endl;
}
return 0;
}
这样子写就可以啦..我觉得没有必要用函数...
CatomyF 2004-11-23
  • 打赏
  • 举报
回复
楼上的 你这不叫穷举?
你的程序时间复杂度好象也是O(n*n)哦
carylin 2004-11-23
  • 打赏
  • 举报
回复
void FullNum(int begin, int end)
{
for (int i = begin; i < end; ++i)
{
int sum = 0;
for (int j = 1; j < i; ++j)
{
if (i % j == 0) {sum += j;}
}
if (sum == i) {cout << i << "\t" << endl;}
}
}
longlijing 2004-11-23
  • 打赏
  • 举报
回复
楼上的.才不是你这样想的.1到100还好说.如果是1到1000到10000...呢.难不成你也去穷举???
偶来写个算法比较简单的程序.
#define N 100
main()
{int i,j,sum=0;
for(i=1;i<N;i++)
for(j=1;j<i;j++)
{ if(i%j==0)sum+=j;
}
if(sum==i)printf("%3d",&i);
}
alphakiller 2004-11-23
  • 打赏
  • 举报
回复
最简单的方法是用穷举法,把符合条件的都找出来
klynigel 2004-11-23
  • 打赏
  • 举报
回复
我写的
大家改一改
main()
{int nigel(int);
int n,c;
for(n=1;n<=1000;n++)
c=nigel(n);
printf("%5d",c);
}
int nigel(int x)
{int sum=0,i;
for(i=1;i<x/2;i++)
{if(x%i==0)sum=sum+i;}
if(sum==x)
return(x);
}


不知怎么了
结果老是500


还有
怎样找完数啊
即有哪些算法??
望高手指教!!
penglewen 2004-11-22
  • 打赏
  • 举报
回复
用心想一下就出来啦!!
学编程都会讲得!!!
Endof 2004-11-22
  • 打赏
  • 举报
回复
大一的时候就编过了……
cao12m 2004-11-22
  • 打赏
  • 举报
回复
简单得要命 同意楼上
fengfeng1982 2004-11-22
  • 打赏
  • 举报
回复
完数的定义是不是一个数他的所有约数的和等于这个数?如28=1+2+4+7+14。完数的判定:
int n;//要判定的数
int sum=0;
for(int i=1;i<=n/2;i++)
{
if(n%i==0)
sum=sum+i
}
if(sum==n)
那n就是完数
寻开心 2004-11-22
  • 打赏
  • 举报
回复
这样的数总共就没有发现几个
1000以内好像只有3个
klynigel 2004-11-22
  • 打赏
  • 举报
回复
就是一个数
等于它所有的约数的和
例6=1+2+3
cao12m 2004-11-22
  • 打赏
  • 举报
回复
完数?什么意思?
klynigel 2004-11-22
  • 打赏
  • 举报
回复
不知道啊
我现在刚学函数啊
就是自编一个函数吧
greenteanet 2004-11-22
  • 打赏
  • 举报
回复
请问楼主用什么函数写啊?递归....

69,369

社区成员

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

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