c++求1000以内完数,求大神解答

一个如果恰好等于其因子之和称之为完数,如6的因子为1,2,3,因此6是完数,求1000以内所有完数,要用到循环语句。

 #include <iostream>
using namespace std;
int main()
{
 int i,j,k,sum;
    cout<<" 1000以内的完数有:";
 for(i=2;i<=1000;i++)
 {
  k=i/2;
  sum=0;
  for(j=1;j<=k;j++)

   if(i%j==0)
    sum=sum+j;

   if(sum==i)
    cout<<"sum="<<sum<<endl;
 }
 return 0;
}
 #include<iostream.h> 

void main()
{ 
 int m; 
 for(m=1;m<=1000;m++)
 { 
  int k=0; 
  for(int i=1;i<m;i++)//这里修改了
  { 
   if((m%i)==0)
    k=k+i; 
  } 
  if(k==m)
   cout<<" "<<m<<endl; 
 } 
}

你直接加一句输出语句就可以了。

#include

void main()
{
int m;
for(m=1;m<=1000;m++)
{
int k=0;
for(int i=1;i<m;i++)//1是不是完数,如果1是完数的话,这里的语句就会跳过1,最终的输出也没有1,是不是应该修改为for(int i =1;i<=m;i++)
{
if((m%i)==0)
k=k+i;
}
if(k==m)
cout<<" "<<m<<endl;
}
}


        #include<iostream>

  using namespace std;
  int main()
  {int n=1000;
  int r=0,j,i;
  for(i=1;i<=n;i++)
  {r=0;
  for(j=1;j<i;j++)
  {if(i%j==0){r=r+j;}}
  if(r==i)
  {cout<<i<<endl;}}
  return 0;
  }



```c++
/*问题分析:解题关键是计算出所选取的整数i的因子(因子就是所有可以整除i这个数的树),
讲各个因子累加到变量sum(就是记录所有的因子和),如果sum与整数相等,则可以判断出i为“完数”,
反之则不是“完数”*/
#define _CRT_SECURE_NO_WARNINGS
#include  <iostream>
using namespace std;
//计算出“完数”


int main(void)
{
    int i, j, k, sum;//变量i表示控制选定数范围,j控制除数的范围,k键入所求范围上线,sum记录因子累加之和
    cout << "请输入所求整数范围上限:" << endl;
    cin >> k;//键入范围上限
    for (i = 2; i <= k; i++)
    {
        sum = 0;//保证每一次循环sum都为0
        for (j = 1; j < i; j++)
        {
            if (i % j == 0)//判断j是否为i的因子
                sum += j;
        }
        if (sum == i)//判断因子和与i相等
            cout << "完数为:" << i << endl;
    }
    system("pause");
    return 0;
}

```