一个关于while、for的循环语句问题

来源:百度知道 编辑:UC知道 时间:2024/06/28 12:36:51
如果一个正整数的所有因子(比如8,因子就是1、2、4、8)之和等于该数,则叫它完全数。输入n,输出不超过n的所有正常数。
我实在想不通了。麻烦了。够我去花时间去理解一晚上了

题目搞错了,因子不包括数本身.包括了数本身的话,和肯定大于该数了啊.

#include "stdio.h"
void main()
{
int n;
scanf("%d",&n);

for(int i=2;i<=n;i++)
{
int s=0;
for(int j=1;j<=i/2;j++)
{
if(i%j==0) s+=j;
}
if(s==i) printf("%d ",i);
}
}

#include<iostream>
using namespace std;
int main()
{
int n;

cout<<"输入n:";
cin>>n;

for(int i=1;i<=n;i++)
{
int sum=0;
for(int j=1;j<i;j++)
{
if(i%j==0)
sum+=j;
}
if(sum==i) cout<<i<<endl;
}

return 0;
}

。。。。任何数的因子包含1和其本身。光这两个数加一起就不可能与其相等了。就题目而言是有问题的。
真正的完全数是这样的:
若一个自然数,它所有的真因子(即除了自身以外的约数)的和恰好等于它本身,这种数叫做完全数。
完全数,又称完美数或完备数,是一些特殊的自然数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
例如:第一个完全数是6,它有约数1、2、3、6,除去它本身6外,其余3个数相加,1+2+3=6。第二个完全数是28,它有约数1、2、4、7、14、28,除去它本