20pts求助
查看原帖
20pts求助
1257741
adofai楼主2025/6/17 22:34
#include<bits/stdc++.h>
using namespace std;
long long p(long long a){
    long long b;
    for(b=2;b*b<=a;b++){
        if(a%b==0){
            return 0;
        }
    }
    return 1;
}
int main(){
    long long a,b;
    map<long long,long long> c;
    long long d=0,e=0,f=0,g=0,h;
	cin>>a;
    if(p(a)){
        cout<<1;
        return 0;
    }
	for(b=2;b<=a;b++){
        h=0;
        if(b==a){
            if(!p(a)){
                break;
            }
        }
		while(a%(long long)(round(pow(b,c[b]+1)))==0){
			a/=(long long)(round(pow(b,c[b]+1)));
			g++;
			c[b]++;
			f=1;
            h=1;
		}
        if(h){
            if(!p(a)){
                continue;
            }
            if(c[a]!=0){
            	break;
			}
            g++;
            c[a]++;
            a=1;
            break;
        }
	}
	if(f==0){
		cout<<1;
		return 0;
	}
	cout<<g;
    return 0;
}
2025/6/17 22:34
加载中...