C++求符合条件的数的个数

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

写个判断奇妙数的函数

#include <iostream>
using namespace std;
int qm(int n)
{
    int sum = 0;
    for(int i=1;i<n;i++)
        if(n%i==0)
            sum += i;
    if(sum > n)
        return 1;
    return 0;
}
int main()
{
    int N,count=0;
    cin>>N;
    for(int i=1;i<=N;i++)
        if(qm(i) == 1)
            count++;
    cout<<count;
}