请问一下各位大佬,这个代码哪里错了
查看原帖
请问一下各位大佬,这个代码哪里错了
761210
dpdfs12345楼主2023/8/2 15:59
#include <iostream>
#include <set>
#include <cstdio>
using namespace std;
const int N = 5e5 + 10;
int n;
int a[N];
set<int> s;
void solve(){
	for(int i=1;i<=n;i++){
		for(int j=2;j*j<=a[i];j++){
			if(a[i] % j == 0){
				if(s.count(j)){
					puts("No");
					return ; 
				}
				while(a[i] % j == 0) a[i] /= j;
				s.insert(j);
			}
		}
		if(a[i] > 1 && s.count(a[i])){
			puts("No");
			return ;
		}
		s.insert(a[i]);
	}
	puts("Yes");
}
int main(){
	int T;
	scanf("%d",&T);
	while(T -- ){
		s.clear();
		scanf("%d",&n);
		for(int i=1;i<=n;i++) scanf("%d",&a[i]);
		solve();
	}
	return 0;
}
2023/8/2 15:59
加载中...