不知道哪里错了
查看原帖
不知道哪里错了
736997
zhuxinlei楼主2023/12/30 19:36
#include<bits/stdc++.h>
using namespace std;
long long n,z=0;
bool sushu(long long x){
	for(int i=2;i<=sqrt(x);i++){
		if(x%i==0) return false;
	}
	return true;
}
void find(long long x,long long y){
	if(x%y==0){
		z++;
		find(x/y,y);
	}
}
int main(){
	scanf("%lld",&n);
	if(sushu(n)){
		printf("%lld",n);
		return 0;
	}
	for(int i=2;i<=n;i++){
		if(sushu(i)&&n%i==0){
			z=0;
			find(n,i);
			n/=pow(i,z);
			if(n==1){
				if(z==1) printf("%d",i);
				else printf("%d^%d",i,z);
			}
			else{
				if(z==1) printf("%d * ",i);
				else printf("%d^%d * ",i,z);
			}
		}
		if(sushu(n)){
			printf("%d",n);
			return 0;
		}
	}
	return 0;
}

记录

2023/12/30 19:36
加载中...