#include <iostream>
using namespace std;
/*完全数判别:因子之和等于数本身如,6=1+2+3,6为完全数
找出输入范围内的所有完全数,范围小于1000
*/
void main()
{
int m = 0;
int r[100];
int sum=0;
cout<<"请输入范围"<<endl;
cin>>m;
// 先求出每个数的因子,然后判断他们的和是否等于该数
for(int i=2;i<m;i++)//从二开始计算,因为1肯定不是完全数
{
int k=0;
for(int j=1;j<i;j++)
{
if(i%j==0)
{
r[k]=j;
k++;
sum+=j;
}
}
if(sum == i){
cout<<i<<"——是个完全数,它有"<<k+1<<"个因子——,因子分别为:";
for(int i=0;i<k;i++)//此处不能写成i<=k,否则会有一个随机数,呵呵,实际长度就是小于k。
{
cout<<r[i]<<",";
}
cout<<endl;
}
k=0;//清空,便于下个数使用改变量
sum=0;//清空,便于下个数使用改变量
}
}
using namespace std;
/*完全数判别:因子之和等于数本身如,6=1+2+3,6为完全数
找出输入范围内的所有完全数,范围小于1000
*/
void main()
{
int m = 0;
int r[100];
int sum=0;
cout<<"请输入范围"<<endl;
cin>>m;
// 先求出每个数的因子,然后判断他们的和是否等于该数
for(int i=2;i<m;i++)//从二开始计算,因为1肯定不是完全数
{
int k=0;
for(int j=1;j<i;j++)
{
if(i%j==0)
{
r[k]=j;
k++;
sum+=j;
}
}
if(sum == i){
cout<<i<<"——是个完全数,它有"<<k+1<<"个因子——,因子分别为:";
for(int i=0;i<k;i++)//此处不能写成i<=k,否则会有一个随机数,呵呵,实际长度就是小于k。
{
cout<<r[i]<<",";
}
cout<<endl;
}
k=0;//清空,便于下个数使用改变量
sum=0;//清空,便于下个数使用改变量
}
}