暴力解法很容易想到但是占用内存大,时间复杂度高,外层n次内层n次需要n2
#include <stdio.h> int main(void) { int n, cnt = 0; scanf("%d",&n); getchar();
for(int i=1; i<=n; i++) // 输入数字n 外层循环取小于n的所有数字
{
int sum=0;
for(int j=1; j<i; j++) // 内层循环用小于n的数字去除
{
if(i % j == 0) // 能整除变成取余为0
sum += j;
}
if(sum == i) //如果求和和输入数值相等计数加一
cnt++;
}
printf("%d\t",cnt);
return 0;
}