注册 登录
编程论坛 C++教室

编程求1000内的完数,完数指一个数恰好等于它的包括1在内的所有不同因子之和,如6=1+2+3.

tiantian0623 发布于 2008-04-23 22:40, 1236 次点击
编程求1000内的完数,完数指一个数恰好等于它的包括1在内的所有不同因子之和,如6=1+2+3.
4 回复
#2
yijing212008-04-23 22:52
你可以去飞燕的论坛上看看  都有的  算法啊算法
#3
忘记喧嚣2008-04-24 13:12
#include<iostream>
using namespace std;
int main()
{

int x=0;
int y=0;
for(x=2; x<=1000; x++)
{
   int t=0;
   for(y=x-1;y>=1;y--)
   {
    if((x%y)==0)
    {
     t+=y;
    }
   }
   // cout<<"t="<<t<<endl;
if(t==x)
{
   cout<<x<<endl;
}
}

return 0;
}

以前写的呵呵 ..以后自己要多想想 很简单的
#4
中学者2008-04-24 14:08
自己整理下.
程序代码:

#include<iostream>
using namespace std;
int main(void)
{
    int num;
    while(cin>>num)
    {
        int sum = 0;
        for(int n = num,a=2;a<num;a++)
           if(n%a==0)
           {
                cout<<a<<',';
                sum+=a;
            }
        if(num!=1&&++sum==num) cout<<'1'<<'\n'<<num<<endl;
     }
  return 0;
}
#5
litao612008-04-27 21:25
#include<stdio.h>
void main()
{
    int i,j,s;
    for(i=1;i<=1000;i++)
    {
        s=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0)
                s=s+j;
        }
        if(s==i)
        {
            printf("%d its factors are ",i);
            for(j=1;j<i;j++)
            {
                if(i%j==0)
                    printf("%d,",j);
            }
            printf("\n");
        }
    }
}
试着运行一下,应该可以的啊.自己已经运行通过啦.
1