bate's blog

調べたこと実装したことなどを取りとめもなく書きます。

因数分解

そろそろ、分数のプログラムと組み合わせてみる。

#include <iostream>
#include <vector>
//#include <math.h>

using namespace std;

// 因数分解
template<class T> vector<T> Factorization( T n );
template<class T> vector<T> Factorization( T n )
{
	vector<T> factor_elements;
	T a = 2;

	while( n >= a*a )
	{
		if( 0 == n % a )
		{
			// 因数分解の要素を格納
			factor_elements.push_back( a );
			n /= a;
		}
		else
			++a;
	}

	factor_elements.push_back( n );

	return factor_elements;
}

int main()
{
	cout << "整数を入力してください。>";
	int input_n;
	cin >> input_n;
	vector<int> factor = Factorization<int>( input_n );

	// 結果出力
	cout << input_n << " = ";
	for( int i = 0; i < (int)factor.size(); ++i )
	{
		if( 0 == i )
			cout << factor.at(i) << "*";
		else if( (factor.size()-1) == i )
			cout << factor.at(i) << endl;
		else
			cout << factor.at(i) << "*";
	}

	return 0;
}