题目链接
#include<iostream>
#include <vector>
using namespace std;
vector<int> prime(50000, 1);//声明一个初始大小为50000且初始值都为1的向量
int main() {for(int i = 2; i * i < 50000; i++)for(int j = 2; j * i < 50000; j++)prime[j * i] = 0;//不是素数的都设置为1 long long a;cin>>a;cout<<a<<"=";if(a == 1) cout<<"1";bool state = false;//用state判断是否输入过因子,输入过就要再前面输出“*”for(int i = 2; i < 50000 && a >= 2; i++) {int cnt = 0, flag = 0;//cnt为因子个数 while(prime[i] == 1 && a % i == 0) {//i为质因子 cnt++;a = a / i;flag = 1;}if(flag) {//用state判断是否输入过因子,输入过就要再前面输出“*”if(state) cout<<"*";cout<<i;state = true;}if(cnt >= 2) cout<<"^"<<cnt;}if (a > 1) {//用state判断是否输入过因子,输入过就要再前面输出“*”if(state){cout<<"*"<<a;}else{cout<<a;}}return 0;
}