2022pta天梯賽熱身賽(試水賽)L1-8均是素數
阿新 • • 發佈:2022-04-18
題目大意:
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> 2using 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 }