【模板】唯一分解定理

发布时间 2023-07-10 18:47:55作者: 未抑郁的刘大狗

问题描述

任何大于\(1\)的正整数都能唯一分解为有限个质数的乘积:

          \(N=p_1^{c_1}p_2^{c_2}...p_k^{c_k}\)

其中\(p_1,p_2,\dots,p_k\)从小到大排列

输入数据

      一个数\(n(n \le 10^{17})\)

输出数据

      将其质因数与其次数顺序输出

      具体格式见样例

输入样例1


84

输出样例1


2^2
3^1
7^1

注意

注意数据范围与变量的上限

AC code


#include<bits/stdc++.h>
using namespace std;
unsigned long long n;
int main(){
	cin>>n;
	for(unsigned long long i=2;i*i<=n;i++){
		int cnt=0;
		if(n%i==0){
			cout<<i<<"^";
			while(n%i==0){
				n/=i;
				cnt++;
			}cout<<cnt<<endl;
		}
	}if(n>1)
		cout<<n<<"^1";
	return 0;
}