2886 - 因数分解

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 128 MB

各位在小学时都学过因数分解,都了解怎么样用纸笔计算出结果,现在由你来教电脑做因数分解。因数分解就是把一个数,切分为若干个质数的乘积,如 12=2^2 * 3 ,其中, 次方的符号以 ^ 来表示.


题目输入

一个整数x, 大于1 且 小于等于 1000000

题目输出

一个字串为整数x的因数分解答案,格式如样例。

输入/输出样例

输入格式

20

输出格式

2^2*5

C++解答

#include <bits/stdc++.h>
using namespace std;

void f(int x) {
	bool flag = true;
	for (int i = 2; i <= x / i; i ++) {
		if (x % i != 0) continue;
		
		int cnt = 0;
		while (x % i == 0) {
			cnt ++;
			x /= i;
		}
		
		if (!flag) cout << '*';
		flag = false;
		
		if (cnt > 1) printf("%d^%d", i, cnt);
		else if (cnt == 1) printf("%d", i);
	}
	if (x != 1) {
		if (flag) printf("%d", x);
		else printf("*%d", x);
	}
}

int main() {
	int n;
	cin >> n;
	
	f(n);
	
	return 0;
}