求愛数 by C++

方針



割り切れた数を加算していくだけ

サンプルコード


#include <iostream>

using namespace std;

int IsFriend(int a,int b);
int GetFactorSum(int num);

//--------------------------------------------------------
//						 Main
//--------------------------------------------------------
int main()
{
	int a,b;
	
	cin >> a;
	cin >> b;
	
	
	cout << a << " and " << b ;
	
	if( IsFriend(a,b) )	cout << " are friend\n"	  << endl; 
	else 			cout << " are not friend\n" << endl;
	
	
	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;
}