题解:根据题意如果2~i+1范围内没法整除就删掉嘛,所以这题其实最多暴力前100就行。
证明:因为如果前100有不能整除的,那么这个数一定可以删掉。但是如果前100都能被整除,也就是前100每个数都是这个数的因子,那么这个数就太大了绝对超过了1e9(因为这个数至少是100的阶乘了么),那么在题目范围内这个样的数就不存在了,所以遍历前100是肯定够的。
AC代码:
#include <bits/stdc++.h>
#define x first
#define y second
#define int long long
using namespace std;
const int N=1e6+5;
int n;
int a[N];
void solve(){
cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
int flag=0;
for(int j=2;j<=min(100LL,i+1);j++){
if(a[i]%j)flag=1;
}
if(!flag){
cout<<"NO"<<endl;
return;
}
}
cout<<"YES"<<endl;
}
main(){
int T;
cin>>T;
while(T--) solve();
}