本人代码:
#include<bits/stdc++.h>
using namespace std;
typedef int ll;
ll t,n,k;
bool bit[30000005]; ll prim[10000005],cnt;
ll low[30000005];
int main(){
for(ll i=2;i<=30000000;i++){
if(!bit[i]){
prim[++cnt]=i;
low[i]=1;
}
for(ll j=1;j<=cnt && (i*prim[j])<=30000000;j++){
bit[i*prim[j]]=1;
low[i*prim[j]]=prim[j];
if(i%prim[j]==0) break;
}
}
scanf("%lld",&t);
while(t--){
scanf("%lld%lld",&n,&k);
if(k%3) {
puts("-1");
continue;
}
ll cnt=0;
if(n%3 && n%2) n=n+low[n], cnt++;
while(n%8==0) n/=2,cnt++;
printf("%lld\n",cnt);
}
}
下载了第二组数据,洛谷 ide 上过了,提交 TLE