注册 登录
编程论坛 C++教室

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程

realll 发布于 2010-01-25 16:10, 1128 次点击
#include<iostream.h>
void main()
{
    int i,j=0,n,k[1000],a=0;
    for(n=1;n<=1000;n++)
    {
        for(i=2;i<n;i++)
        {
        if(n%i==0)
        {
            
            n=n/i;
            k[j]=i;
            j++;
        }
        else
            break;
        
        }
   
    for(;j>=0;j--)
    {
        a+=k[j];
    }
    if(a==n)
        cout<<n<<endl;
    }
        
}
小弟实在不知道问题出在哪里,希望各位大虾们指出问题啊
4 回复
#2
jwfk2010-01-25 21:00
你试着把else break;去了
#3
realll2010-01-26 08:26
回复 2楼 jwfk
还是不行额
#4
cnfarer2010-01-26 08:52
n=n/i;导致死循环!!!

修改如下:VC编译器通过
#include<iostream>
using namespace std;
void main()
{
    int i,j=0,n,k[1000],a=0;
    for (n=2;n<=1000;n++)
    {
        a=0,j=0;
        for (i=1;i<n;i++)
        {
            if (n%i==0)
            {

               // n=n/i;
                k[j]=i;
                j++;
            }
            //else
                //break;


        }
        j--;
        for (;j>=0;j--)
        {
            a+=k[j];
        }
        if (a==n)
            cout<<n<<endl;
    }

}
#5
realll2010-01-27 10:56
回复 4楼 cnfarer
多谢啊
1