欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

2022 PTA 梯队赛热身赛(试赛) L1-8 都是质数

最编程 2024-04-30 10:24:41
...

题目大意:

L1-8 均是素数 (20 分)
在给定的区间 [m,n] 内,是否存在素数 p、q、r(p<q<r),使得 pq+r、q**r+p、r**p+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
题目思路,先打表储存,在判断即可,

朴素做法:

 1 #include<bits/stdc++.h>
 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 }

原文地址:https://www.cnblogs.com/LQS-blog/p/16162739.html