题目
在给定的区间 [m,n] 内,是否存在素数 p、q、r(p<q<r),使得 pq+r、qr+p、r*p+q 均是素数?
输入格式:
输入给出区间的两个端点 0<m<n≤1000,其间以空格分隔。
输出格式:
在一行中输出满足条件的素数三元组的个数。
输入样例:
1 35
输出样例:
10
代码如下:
#include<stdio.h>
#include<math.h>
int judge(int m) {
if(m<2)
return 0;
for (int i = 2; i <= sqrt(m); i++) {
if (m % i == 0)
return 0;
}
return 1;
}
int main(void) {
int m, n;
int ss[1001];//将在范围内的素数存入数组中
scanf("%d %d", &m, &n);
int k = 0,flag = 0;
for (int i = m; i <= n; i++) {
if (judge(i) == 1) {
ss[k] = i;
k++;
}
}
int x = 0;
for (int p = 0; p < k; p++) {
for (int q = p+1; q < k; q++) {
for (int r = q+1; r < k; r++) {
if (judge(ss[p] * ss[q] + ss[r]) == 1 && judge(ss[q] * ss[r] + ss[p]) == 1 && judge(ss[r] * ss[p] + ss[q]) == 1) {
x++;
}
}
}
}
printf("%d", x);
return 0;
}