一个如果恰好等于其因子之和称之为完数,如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;
}
```