0分求助
查看原帖
0分求助
1120326
GZHYN楼主2024/9/6 22:44

如下:

#include<bits/stdc++.h>
using namespace std; 
long long n;
vector<long long>v;
bool isPrime(int n){
	if(n<=3){
        return n>1;
    }
    if(n%6!=1&&n%6!=5) {
        return false;
    }
    int sq=(int)sqrt(n);
    for(int i=5;i<=sq;i+=6){
        if(n%i==0||n%(i+2)==0){
            return false;
        }
    }
    return true; 
}
int main(){
	cin>>n;
	for(int i=2;i<=n/i;i++){
		if(n%i!=0)continue;
		if(isPrime(i)){
			v.push_back(i);
		}
		if(isPrime(n/i)){
			v.push_back(n/i);
		}
	}
	for(int i=0;i<v.size();i++){
		if(i!=0)cout<<" * ";
		int x=0,y=n;
		while(y%v[i]==0){
			y/=v[i];
			x++;
		}
		if(x==1)cout<<v[i];
		else cout<<v[i]<<'^'<<x;
	}
	return 0;
}
2024/9/6 22:44
加载中...