题目大意:
L1-8 均是素数 (20 分)
在给定的区间 [m,n] 内,是否存在素数 p、q、r(p
输入格式:
输入给出区间的两个端点 0
输出格式:
在一行中输出满足条件的素数三元组的个数。
输入样例:
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
题目思路,先打表储存,在判断即可,
朴素做法:
1 #include
2 using namespace std;
3 int s[10010];
4 int is_prime(int x)
5 {
6 if (x <= 1)
7 return false;
8 for (int i = 2; i <= sqrt(x); i++)
9 {
10 if (x % i == 0)
11 return false;
12 }
13 return true;
14 }
15 int main()
16 {
17 int a, b;
18 cin >> a >> b;
19 for (int i = a; i <= b; i++)
20 s[i] = is_prime(i);
21 int ans = 0;
22 for (int p = a; p <= b; p++)
23 if (s[p])
24 for (int q = p + 1; q <= b; q++)
25 if (s[q])
26 for (int r = q + 1; r <= b; r++)
27 if (s[r])
28 {
29 int t = p * q + r;
30 int w = q * r + p;
31 int e = r * p + q;
32 if (is_prime(t) &&is_prime(w) &&is_prime(e))
33 ans++;
34 }
35 cout<<ans;
36 return 0;
37 }