在给定的区间 [m,n] 内,是否存在素数 p、q、r(p<q<r),使得 pq+r、qr+p、rp+q 均是素数?
输入格式:
输入给出区间的两个端点 0<m<n≤1000,其间以空格分隔。
输出格式:
在一行中输出满足条件的素数三元组的个数。
输入样例:
1 35
输出样例:
10
样例解读
满足条件的 10 组解为:
2, 3, 5
2, 3, 7
2, 3, 13
2, 3, 17
2, 5, 7
2, 5, 13
2, 5, 19
2, 5, 31
2, 7, 23
2, 13, 17
代码:
//#include<iostream>
//#include<cstring>
//#include<cmath>
//#include<algorithm>
//#include<ctype.h>
//#include<stdio.h>
//#include<map>
#include<bits/stdc++.h>
using namespace std;
bool isprime(int a){
if(a<=1) return false;
for(int i=2;i<=sqrt(a);i++){
if(a%i==0) return false;
}
return true;
}
int main(){
int n,m,p,q,r,count=0;
cin>>m>>n;
for(p=m;p<=n;p++){
if(isprime(p)){
for(q=p+1;q<=n;q++){
if(isprime(q)){
for(r=q+1;r<=n;r++){
if(isprime(r)){
if(isprime(p*q+r)&&isprime(q*r+p)&&isprime(r*p+q)) {
count++;
}
}
}
}
}
}
}
cout<<count;
return 0;
}