1. 程式人生 > 其它 >2022pta天梯賽熱身賽(試水賽)L1-8均是素數

2022pta天梯賽熱身賽(試水賽)L1-8均是素數

題目大意:

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 }