在给定的区间 [m,n] 内,是否存在素数 p、q、r(p<q<r),使得 pq+r、qr+p、rp+q 均是素数?
输入格式:
输入给出区间的两个端点 0<m<n≤1000,其间以空格分隔。
输出格式:
在一行中输出满足条件的素数三元组的个数。
输入样例:
1 35
输出样例:
10
眼瞎啊,当时只看见 0<m<n≤1000,把 [m,n]给无视了,硬是测试很多遍不过。。。
#include <bits/stdc++.h>
using namespace std;
int isPrime(int x)
{
int ans=1;
if(x<=1)
return 0;
for(int i=2;i<=sqrt(x);i++)
{
if(x%i==0)
{
ans=0;
break;
}
}
return ans;
}
int main()
{
int m,n,t=0,sum=0;
cin>>m>>n;
int prime[10001];
for(int i=m;i<=n;i++)
{
if(isPrime(i))
prime[t++]=i;
}
for(int i=0;i<t;i++)
{
for(int k=i+1;k<t;k++)
{
for(int j=k+1;j<t;j++)
{
int p=prime[i];
int q=prime[k];
int r=prime[j];
if(isPrime(p*q+r)&&isPrime(q*r+p)&&isPrime(r*p+q))
sum++;
}
}
}
cout<<sum;
}