首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求一到一千内的完全数(一个数恰好等于它的所有因子(本身除外)的和),该如何解决

2012-05-27 
求一到一千内的完全数(一个数恰好等于它的所有因子(本身除外)的和)写了这个程序不知那里有问题:#includei

求一到一千内的完全数(一个数恰好等于它的所有因子(本身除外)的和)
写了这个程序不知那里有问题:
#include<iostream>
#include<iomanip>
using namespace std;
const int n=1000;
int main(){
int a[n];
int i,j,sum=0;
for(i=0;i<n;i++) a[i]=1+i;
for(i=1;i<n;i++)
{
for(j=1;j<a[i];j++)
{
if(a[i]%j==0){
sum+=j;
if(sum==a[i]) a[i]=a[i];
}
else a[i]=0;
}
}
int count=0;
cout<<"1~"<<n<<"之间的完全数:"<<endl;
for(i=0;i<n;i++)
if(a[i]!=0)
{
cout<<setw(6)<<a[i];
count++;
if(count%5==0) cout<<endl;
}
cout<<endl;
return 0;
}
高手帮忙看一看,指出问题来!

[解决办法]

C/C++ code
#include<iostream>#include<iomanip>using namespace std;const int n=1000;int main(){    int a[n];    int i,j,sum=0;    cout<<"1~"<<n<<"之间的完全数:"<<endl;    for(i=0;i<n;i++)     {        a[i] = 1 + i;    }    for(i=0;i < n;i++)    {        sum = 0;        for(j = 1;j <= a[i];j++)        {            if(a[i]%j ==0)            {                sum += j;                if(sum == a[i])                {                    cout<<a[i]<<setw(6);                }            }        }    }    cout<<endl;    return 0;}
[解决办法]
C/C++ code
 const int n=1000; int main(){     int a[n];     int i,j,sum=0;     for(i=0;i<n;i++) a[i]=1+i;     for(i=1;i<n;i++)     {         sum = 0;         for(j=1;j<a[i];j++)         {             if(a[i]%j==0){                 sum+=j;            }          }             if(sum!=a[i])             {                 // a[i]=a[i];//what do you want to do?                 a[i]=0;             }     }     int count=0;     cout<<"1~"<<n<<"之间的完全数:"<<endl;     for(i=0;i<n;i++)         if(a[i]!=0)         {             cout<<setw(6)<<a[i];             count++;             if(count%5==0) cout<<endl;         }         cout<<endl;         return 0; }
[解决办法]
你的else改变了数组a的值

C/C++ code
#include < stdio.h>main(){int m,i,s;for(m=1;m<=1000;m++){s=0;for(i=1;i<m;i++)if(m%i==0)s=s+i;if(s==m)printf("%d,",s);}} 

热点排行