zoj 1284 - 行者无疆 始于足下 - 行走,思考,在路上
zoj 1284
xiaohanyu
posted @ Thu, 20 May 2010 10:25:49 +0800
in Algorithm
with tags
c++ Algorithm ZOJ
, 2831 readers
简单题。题目大意就是判断一个数是否为Perfect number。可是我竟然三次才ac,原因是没有考虑到数字为1的时候。
求真因数和的时候可以考虑质数判断的算法,循环到就行了。代码很长很菜:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 | #include <stdio.h> #include <math.h> int get_sum( int number) { int i; int sum = 0; for (i = 1; i < sqrt (number); ++i) { if (number % i == 0) { sum += i + number / i; } } if (( int ) sqrt (number) * ( int ) sqrt (number) == number) { sum += sqrt (number); } sum -= number; return sum; } int main( int argc, char *argv[]) { int number; printf ( "PERFECTION OUTPUT\n" ); while ( scanf ( "%d" , &number) && number) { int sum = get_sum(number); if (sum < number) { printf ( "%5.0d DEFICIENT\n" , number); } else if (sum == number) { printf ( "%5.0d PERFECT\n" , number); } else printf ( "%5.0d ABUNDANT\n" , number); } printf ( "END OF OUTPUT\n" ); return 0; } |