全部TLE 求调必关
查看原帖
全部TLE 求调必关
741937
harryzhou楼主2024/12/13 12:49
#include <bits/stdc++.h>
using namespace std;

long long prime[123121221];
long long a[123123112];

bool isprime(long long n){
	if(n < 2)return 0;
	for(long long i = 2; i <= sqrt(n); i++){
		if(n % i == 0)return 0;
	}
	return 1;
}

int main(){
	long long n;
	cin >> n;
	long long cur = 0;
	for(long long i = 2; i <= n; i++){
		if(isprime(i)){
			prime[++cur] = i;
		}
	}
	long long nn = n;
	
	bool f = 1;
	long long cnt = 0;
	if(n % 2 == 0){
		while(nn % 2 == 0)
		{
			nn /= 2;
			cnt++;
		}
		if(a[2] == 1){
			cout << 2;
		}
		else cout << 2 << "^" << cnt;
		f = 0;
	}
	for(long long i = 3; i <= prime[cur]; i += 2){
		nn = n;
		if(isprime(i)){
			long long cnt = 0;
			while(nn % i == 0)
			{
				nn /= i;
				cnt++;
			}
			if(cnt == 1){
				if(f){
					cout << i;
				}
				else
					cout << " * " << i; 
			}
			else if(a[i] > 1){
				if(f){
					cout << i << "^" << cnt;
				}else
					cout << " * " << i << "^" << cnt; 
			}
			f = 0; 
		}
	}
	return 0;
} 
2024/12/13 12:49
加载中...