SGU 231.Prime Sum
题意:
求有多少对质数(a,b)满足a<=b 且a+b也为质数。(a+b<=10^6)
Solution:
除了2之外的质数都是奇数,两个奇数的和是偶数,不可能是质数。所以题目就是求差为2的质数对的个数。
先用筛法刷出10^6内的质数,用bool数组标记(int型数组会超内存),然后扫一遍筛出来的质数,统计满足要求的答案就行了。

#include <iostream> using namespace std; const int INF = 1000002; bool f[INF]; int ok[80000],out[10000]; int n, sum, ans; void sift (int n) { for (int i = 2; i <= n; i++) { if (!f[i]) { ok[++sum] = i; for (int j = i + i; j <= n; j += i) f[j] = 1; } } } int main() { cin >> n; sift (n); for (int i = 1; i < sum; i++) if (!f[ok[i] + 2]) out[++ans]=ok[i]; cout << ans << endl; for(int i=1;i<=ans;i++) cout<<2<<' '<<out[i]<<endl; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步