https://vjudge.net/problem/Gym-101490L
队友写的qwq。1e9,就算用bitset打表也打不好qwq(我tm怎么会这么想qwq)
直接素因子分解,统计素因子的个数(素因子的倍数不会是素数,也不会是素因子。所以这些数的素因子只有1个,埃筛就是这样)
#include <bits/stdc++.h>
#define ll long long
ll Stack[1000], top, Cnt[1000],tmp[1000];//stack是素因子数组,cnt是素因子的幂
//tmp[i]保存n!/(n-m)!中素因子stack[i]的个数
void fenjie(ll k)//分解的是k
{
top = 0;
memset(Cnt, 0, sizeof Cnt);
for(ll i = 2; i*i<=k; i++)if(k%i==0){
while(k%i==0)Cnt[top]++, k/=i;
Stack[top++] = i;
}
if(k>1){
Cnt[top]++;
Stack[top++] = k;
}
}
int main()
{
ll n;
while(scanf("%lld",&n)!=-1)
{
fenjie(n);
// for(int i=0;i<top;i++)
// printf("%lld %lld\n",Stack[i],Cnt[i]);
if(top==1)
printf("yes\n");
else printf("no\n");
}
return 0;
}