Regionals 1996 >> North America - Mid-Atlantic USA
问题链接:UVALive5429 UVA382 POJ1528 HDU1323 ZOJ1284 Perfection。入门练习题,用C语言编写程序。
一个数的真因数之和等于本身的数称为完美数。例如6=1+2+3,6是完美数。
题意简述:输入若干个整数n,n=0结束,计算真因数之和。若真因数之和,等于n则输出PERFECT,大于n则输出ABUNDANT,小于n则输出DEFICIENT。
问题分析:用试探法计算所有因数之和。需要注意n=1的情况。
程序中编写函数getsum()用于计算因数之和。
AC的C语言程序如下:
/* UVALive5429 UVA382 POJ1528 HDU1323 ZOJ1284 Perfection */
#include <stdio.h>
#include <math.h>
int getsum(int n)
{
int i, sum=1;
for(i=2; i<n; i++) {
if(n % i == 0)
sum += i;
}
return sum;
}
int main(void)
{
int n, sum;
printf("PERFECTION OUTPUT\n");
while(scanf("%d", &n) != EOF && n != 0) {
if(n == 1)
printf("%5d DEFICIENT\n", n);
else {
sum = getsum(n);
if(sum<n)
printf("%5d DEFICIENT\n", n);
else if(sum==n)
printf("%5d PERFECT\n", n);
else
printf("%5d ABUNDANT\n", n);
}
}
printf("END OF OUTPUT\n");
return 0;
}