为啥测试点1RE
查看原帖
为啥测试点1RE
1189304
HUDSI1256楼主2024/3/27 20:58
#include <bits/stdc++.h>
#define int long long
using namespace std;
int t,n;
bool a[100010];
int p[3000100],cnt;
void f(int x){
	a[0]=1;
	a[1]=1;
	for(int i=2;i<=x;i++){
		if(a[i]==0){
			p[++cnt]=i;	
		}
		for(long long j=1;i<=x/p[j];j++){
			a[p[j]*i]=1;
			if(i%p[j]==0) break;
		}		
	}	
}
void prime(int n){
	for(int i=1;i<=cnt;i++){
		if(n%p[i]!=0)continue;
		if(sqrt(n/p[i])!=sqrt(n/p[i]))continue;
		cout<<(long long)(sqrt(n/p[i]))<<" "<<p[i]<<endl;
		break;
	}
}
signed main(){
	cin>>t;
	f(300010);
	while(t--){
		cin>>n;
		prime(n);
	}
	return 0;
}

2024/3/27 20:58
加载中...