10分求助
查看原帖
10分求助
690127
Xuzhenan520楼主2024/8/26 14:10
#include<bits/stdc++.h>
using namespace std;
int n,sum[100005]={0},ans[100005]; 
queue <int>a;
bool zs(int x) { 
	if (x<2) return false;
	for (int i=2;i*i<=x;i++)
		if (x%i==0) return false;
	return true;
}
int main(){
	long long n;
	cin>>n;
	while(!zs(n)){
		for(int i=2;i*i<=n;i++){
			if(zs(i)&&n%i==0){
				n/=i; 
				a.push(i);
				break;
			}
		}
	} 
	a.push(n);
	int i=0,sz=a.size();
	while(!a.empty()){
		int f=a.front();
		a.pop();
		sum[++i]=f;
	}
	for(int i=1;i<=sz;i++) ans[sum[i]]++;
	//for(int i=1;i<=10000;i++) cout<<ans[i]<<" ";
	int c=0;
	for(int i=1;i<=10000;i++){
		if(ans[i]>1){
			cout<<i<<"^"<<ans[i]<<" ";
			c+=ans[i];	
			if(c<sz) cout<<"* ";
		} 
		if(ans[i]==1){
			cout<<i<<" ";
			c++;
			if(c<sz) cout<<"* ";
		} 
		
	}
	return 0;
}
2024/8/26 14:10
加载中...