一个数是奇妙数,当且仅当所有小于它的约数加起来比它大,例如12除本身外的约数有1,2,3,4,6,它们的和为16,因此12是奇妙数。给定整数N,求不超过N的奇妙数有多少个。

#include

using namespace std;
int hanshu(int N)
{
int n=0,a=0;
for(int i=1;i<=N;i++)
{
for(int j=1;j<i;j++)
{
if(i%j==0)
{
a+=j;
if(a>N)
{n++;
break;
}
}
}
a=0;
}
return n;
}

int main()
{
int N;
cin>>N;
cout<<hanshu(N);
return 0;
}
有什么错误且如何修改

改动处见注释,供参考:

#include <iostream>
using namespace std;
int hanshu(int N)
{
    int n=0,a=0;
    for(int i=1;i<=N;i++)
    {
        for(int j=1;j<i;j++)
        {
            if(i%j==0)
            {
                a+=j;
            }//修改
        } //修改
        if(a>i) //修改
        {
            n++;
            //break; 修改
        }
        a=0;
    }
    return n;
}

int main()
{
    int N;
    cin>>N;
    cout<<hanshu(N);
    return 0;
}