码迷,mamicode.com
首页 > 其他好文 > 详细

SGU 231.Prime Sum

时间:2015-03-09 23:57:47      阅读:151      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!