0分,求哪里错了~输出也没错呀
查看原帖
0分,求哪里错了~输出也没错呀
933472
lygmsy楼主2024/3/16 12:50
#include <bits/stdc++.h>
using namespace std;
bool isPrime(long long num) {
	if (num <= 1)	return false;
	for (long long i = 2; i*i <= num; i++) {
		if (num % i == 0)	return false;
	}
	return true;
}

struct prime {
	long long num, cnt;
};
int main() {
	int n;	cin >> n;
	vector<prime> v;
	int i = 2;
	for (long long i = 2; i*i <= n;i++) {
		if (isPrime(i)) {//如果i是质数
			int cnt = 0;
			while (true) {
				if (n % i != 0) {
					break;
				}
				n = n / i;
				cnt++;
			}
			if(cnt>0)	v.push_back(prime{ i,cnt });
		}
	}
	if (n != 1) v.push_back(prime{ n,1 });
	for (int i = 0; i < v.size(); i++) {
		if (v[i].cnt == 1)	cout << v[i].num ;
		else cout << v[i].num << "^" << v[i].cnt;
		if (i != v.size() - 1) { cout << " * "; };
	}
}
2024/3/16 12:50
加载中...