用C++解决“两质整数”区间询问问题
以下是解决该问题的C++代码: ```cpp #include <iostream> #include <vector> using namespace std; const int MAXN = 1e6 + 5; // 标记质数 vector<bool> isPrime(MAXN, true); // 标记两质整数 vector<bool> isTwoPrimeProduct(MAXN, false); // 前缀和数组,用于快速计算区间内两质整数的数量 vector<int> prefixSum(MAXN, 0); // 埃拉托斯特尼筛法找出质数 void sieve() { isPrime[0] = isPrime[1] = false; for (int i = 2; i * i < MAXN; i++) { if (isPrime[i]) { for (int j = i * i; j < MAXN; j += i) { isPrime[j] = false; } } } // 找出所有两质整数 for (int i = 2; i < MAXN; i++) { if (isPrime[i]) { for (int j = i; j < MAXN; j++) { if (isPrime[j]) { long long product = (long long)i * j; if (product < MAXN) { isTwoPrimeProduct[product] = true; } else { break; } } } } } // 计算前缀和 for (int i = 1; i < MAXN; i++) { prefixSum[i] = prefixSum[i - 1] + isTwoPrimeProduct[i]; } } int main() { sieve(); int Q; cin >> Q; for (int i = 0; i < Q; i++) { int L, R; cin >> L >> R; // 利用前缀和计算区间内两质整数的数量 cout << prefixSum[R] - prefixSum[L - 1] << endl; } return 0; } ``` ### 代码解释: 1. **质数筛法**:使用埃拉托斯特尼筛法找出所有小于`MAXN`的质数,标记在`isPrime`数组中。 2. **找出两质整数**:遍历所有质数对,计算它们的乘积,如果乘积小于`MAXN`,则标记该数为两质整数,存储在`isTwoPrimeProduct`数组中。 3. **前缀和计算**:使用前缀和数组`prefixSum`记录每个位置之前的两质整数的数量,方便快速计算任意区间内两质整数的数量。 4. **处理询问**:对于每个询问`[L, R]`,通过前缀和数组计算区间内两质整数的数量,即`prefixSum[R] - prefixSum[L - 1]`。 ######[AI问答 | 685点数解答 | 2026-04-19 16:15:04]
- Python实现:随机录入45位学生四次成绩函数大揭秘(GPT | 477点数解答 | 2024-12-17 17:00:35)363
- Python实现班级45位同学成绩生成、总评计算及分数统计(字节豆包 | 579点数解答 | 2024-12-21 11:55:01)252
- Python实现45位学生四次成绩随机录入及输出(GPT | 441点数解答 | 2024-12-21 21:02:22)260
- Python实战:45位同学成绩生成、总评计算与分数统计揭秘(字节豆包 | 688点数解答 | 2024-12-22 10:14:17)248
- 判断超级幸运数:满足“纯4/7数位”或“4/7总个数为4或7”的整数计数(阿里通义 | 965点数解答 | 2026-03-13 12:15:06)36
- C3期末:精准求解 3 - 20 范围内数列第 k 项值及注意要点(字节豆包 | 242点数解答 | 2025-06-15 11:26:19)146
- C++求解:查找3 - 20项数列第k项值及注意要点(字节豆包 | 325点数解答 | 2025-06-15 11:27:11)168
- C 语言:按特定顺序读入并输出浮点数、整数和字符(字节豆包 | 106点数解答 | 2024-09-26 00:32:40)329
- C语言:按序读入浮点数、整数、字符并按新顺序输出,附代码实现 (字节豆包 | 108点数解答 | 2024-09-30 22:54:08)342
- C语言:按特定顺序读入并输出浮点数、整数和字符,精确控制小数位(字节豆包 | 155点数解答 | 2024-10-08 22:06:18)335
- C++与Python:按特定顺序输入输出数据并保留浮点数两位小数的实现(字节豆包 | 168点数解答 | 2024-10-08 22:07:03)340
- C语言:按特定顺序读入再输出,含浮点数精确格式处理(字节豆包 | 105点数解答 | 2024-10-08 22:07:29)349