c语言完数个数的简单运用

一个正整数的真因子是指所有能整除它的正整数(不包括自身)。

一个正整数的所有真因子之和等于其本身则被称为完数。

例如:6=1+2+3,6是完数;

而9不是,1也不是。

求在[m,n]之间的完数的个数。

输入
在一行中输入m和n的值,保证m<=n,并且都是正整数(读者无需考虑)。

输出
在一行中输出个数。

输入
5 30
输出
2
输入:
2 5
输出:
0

定义一个函数求所有因子,并求和

#include <stdio.h>
int fun(int n)
{
    int i,sum=0;
    for(i=1;i<n;i++)
        if(n%i==0)
            sum += i;
    return sum;
}
int main()
{
    int m,n,i,count=0;
    scanf("%d%d",&m,&n);
    for(i=m;i<=n;i++)
        if(fun(i) == i)
            count++;
    printf("%d",count);
    return 0;
}