我尼玛就无语了!@!!!!10^10是 1后面10个零! 也就是100亿,int20多亿!
爆int 用long long
这种题 输入最大是n 先打表 到根号n 内的素数全找出来
然后呢 对于1-根号n范围内 直接根据那个筛选法的数组判断
对于大数 我们用素数表的素数去除就可以了。一旦整除 false
#include<iostream>
#include<cstdio>
#include<cstring>
typedef long long LL;
bool arr[100001];
int p[10000];
int k;
void init()
{
arr[1]=0;
arr[2]=1;
for(int i=3;i<=100000;i++)
{
if(i%2)
arr[i]=1;
else
arr[i]=0;
}
for(int i=3;i*i<=100000;i+=2)
{
if(arr[i])
{
for(int j=i+i;j<=100000;j+=i)
arr[j]=0;
}
}
k=0;
for(int i=1;i<=100000;++i)
{
if(arr[i])
p[k++]=i;
}
}
int main()
{
init();
LL n;
while(~scanf("%lld",&n))
{
if(n<=100000)
{
printf(arr[n]?"true\n":"false\n");
}
else
{
bool fin=0;
for(int i=0;i<k;++i)
{
if((long long)p[i]*p[i]>n)
break;
if(n%p[i]==0)
{
fin=1;
printf("false\n");
break;
}
}
if(!fin)
printf("true\n");
}
}
return 0;
}