一个(不包括自身)。 一个正整数的所有真因子之和等于其本身则被称为完数。 例如:6=1+2+3,6是完数; 而9不是,1也不是。 求在[m,n]之间的完数的个数。

int main()
{
int m,n,x=0,i;
scanf("%d %d",&n,&m);
if(n<=x&&x<=m)
for(i=0;i<=m;i++)
{
if(x%i==0&&x!=1&&x!=9)
{
x++;
}
}
printf("%d",x);
return 0;
}

#include <stdio.h>
#include <math.h>

int compute_factors(int x, int a[])
{
    int i = 0;
    int n = (int)sqrt(x);
    a[i++] = 1;
    for (int j = 2; j <= n; j++)
    {
        if (x % j == 0)
        {
            a[i++] = j;
            int k = x / j;
            if (j != k)
                a[i++] = k;
        }
    }
    return i;
}

int is_perfect_number(int x)
{
    int a[100];
    if (x == 1)
        return 0;
    int n = compute_factors(x, a);
    int s = 0;
    for (int i = 0; i < n; i++)
        s += a[i];
    return s == x;
}

int main()
{
    int m, n, count = 0;
    scanf("%d%d", &m, &n);
    for (int i = m; i <= n; i++)
        if (is_perfect_number(i))
            count++;
    printf("%d", count);
    return 0;
}