求愛数 by C
方針
割り切れた数を加算していくだけ
サンプルコード
#include <stdio.h> #include <stdlib.h> #define MAX 16 int IsFriend(int a,int b); int GetFactorSum(int num); //-------------------------------------------------------- // Main //-------------------------------------------------------- int main() { char str[MAX]; int a,b; fgets( str, MAX, stdin ); a = atoi(str); fgets( str, MAX, stdin ); b = atoi(str); printf( "%d and %d", a, b ); if( IsFriend(a,b) ) fputs( " are friend\n", stdout ); else fputs( " are not friend\n", stdout ); return 0; } //-------------------------------------------------------- // 友愛数判定 //-------------------------------------------------------- int IsFriend(int a,int b) { int A = GetFactorSum(a) == b; int B = GetFactorSum(b) == a; if( A && B ) return 1; return 0; } //-------------------------------------------------------- // 約数の和を求める //-------------------------------------------------------- int GetFactorSum(const int num) { const int num2 = num>>1; // num2 = num/2 int sum = 0; for(int i=1;i<=num2;i++) { if( !(num%i) ) sum += i; } return sum; }