View Code of Problem 91

#include<iostream>
#include<vector>
#include<sstream>
using namespace std;

vector<int> initTable(int max){
	vector<int> v;
	for(int i=2; i<=max; i++){
		int flag = 1;
		for(int j=2; j<=i/2; j++){
			if(i % j == 0){
				flag = 0;
				break;
			}
		}
		if(flag == 1) v.push_back(i);
	}
	return v;
}

int isPrime(int x){
	if(x == 2 || x == 3) return 1;
	for(int i=2; i<=x/2; i++){
		if(x%i == 0) return 0;
	}
	return 1;
}

int main(){
	int n;
	cin >> n;
	int x = n;
	if(isPrime(x) == 1){
		cout << x << "=" << x << endl;
		return 1;
	}
	ostringstream iss;
	vector<int> v = initTable(n/2);
	for(int i=0; i<v.size();){
		if(n%v[i] == 0){
			iss << v[i] << "*";
			n /= v[i];
		}else{
			i++;
		}
	}
	string s = iss.str();
	cout << x << "=" << s.substr(0,s.size()-1) << endl;
}

Double click to view unformatted code.


Back to problem 91