函数版素数判定
#include <bits/stdc++.h>
using namespace std;
int num[10005];
int a[10005];
int t=0;
int sh()//埃氏筛法(一般来说用此法筛素数就够了)
{
memset(a,1,sizeof(a));
a[0]=a[1]=0;
for(int i=2; i<=10005; i++)
{
if(a[i])
{
num[t]=i;
t++;
for(int j=2; j*i<10005; j++)//筛掉当前数的倍数
a[j*i]=0;
}
}
return 0;
}
int su(int n)//判断是不是素数的函数
{
int mark=0;
for(int i=0; num[i]<=sqrt(n*1.0);i++)//判断方法
{
if(n%num[i]==0)
{
mark=1;
break;
}
}
if(n==1)//此法不能判断1,把1单独拿出来
mark=1;
return mark;
}
int main()
{
sh();
int n;
while(scanf("%d",&n)!=-1)
{
if(su(n)==0)
printf("YES\n");
else
printf("NO\n");
}
return 0;
}
知否知否,应是绿肥红瘦
#include <bits/stdc++.h>
using namespace std;
int num[10000005];
int a[10000005];
int t=0;
int sh()//线性筛法,比埃氏筛更省时间
{
memset(a,1,sizeof(a));
a[0]=a[1]=0;
for(int i=2; i<=10000001; i++)//注意数组不要越界
{
if(a[i])
{
num[t]=i;
t++;
}
for(int j=0; j<=t&&num[j]*i<=10000001; j++)//减少每一次筛的数量
{
a[num[j]*i]=0;
if(i%num[j]==0)//及时止损,避免筛重复
break;
}
}
}
int su(long long int n)
{
int mark=0;
for(int i=0; num[i]<=sqrt(n*1.0); i++)
{
if(n%num[i]==0)
{
mark=1;
break;
}
}
if(n==1)
mark=1;
return mark;
}
int main()
{
sh();
int n;
cin>>n;
while(n--)
{
long long int a,b,c;
cin>>a>>b>>c;
long long int res=a+b-c;//数据类型要注意
if(su(res)==0)
cout<<"yes"<<endl;
else
cout<<"no"<<endl;
}
return 0;
}
来源:CSDN
作者:独孤蒟蒻
链接:https://blog.csdn.net/qq_46126537/article/details/104314768