#include <iostream>
#include <bits/stdc++.h>
#include <algorithm>
using namespace std;
const int N=1e7+1;
int prime[N];
int b[N];
int cnt=0,max1=1e7;
int main()
{
long long i,j,f,n;
for(i=0;i<max1;i++)b[i]=1;
b[0]=0;b[1]=0;
for(i=2;i<=max1;i++)
{
if(b[i])
prime[++cnt]=i;//将素数放入数组prime数组中保存
for(j=1;j<=cnt&&prime[j]*i<=max1;j++)
{
b[prime[j]*i]=0;
if(i%prime[j]==0)break;
}
}//最优线性筛模板
long long x,y,z,ans;
cin>>n;
while(n--)
{
cin>>x>>y>>z;
f=1;
ans=x+y-z;
for(i=1;prime[i]<=sqrt(ans);i++)
{
if(ans==0||ans==1){
f=0;
break;
}
if(ans%prime[i]==0)
{
f=0;
break;
}
}
if(f==1)printf("yes\n");
else
printf("no\n");
}
return 0;
}
第一次运用线性筛解决问题1e14级判断素数问题--O(n)
最新推荐文章于 2024-09-14 22:25:23 发布
这是一个关于素数筛法的程序实现,使用了最优线性筛模板,可以找到给定范围内的所有素数。然后,根据输入的三个整数,判断它们之间的关系是否能形成素数。程序读取n组数据,对于每组数据,如果x+y-z为素数则输出'yes',否则输出'no'。
摘要由CSDN通过智能技术生成