首页 > 其他 > 详细

SGU 231.Prime Sum

时间:2015-03-09 23:55:33      阅读:221      评论:0      收藏:0      [点我收藏+]

题意:

  求有多少对质数(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;
}
Code

 

SGU 231.Prime Sum

原文:http://www.cnblogs.com/keam37/p/4324631.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!