日々精進

aikoと旅行とプログラミング

【AOJ 2150】Matsuzaki Number

問題

Matsuzaki Number | Aizu Online Judge

ソースコード

#include <iostream>
#include <cstring>
#include <vector>
#include <algorithm>

using namespace std;

#define N 4000001
#define rep(i,n) REP(i,0,n)
#define REP(i,a,n) for(int i=a ; i < n ; i++) 
#define pb push_back

int main(){
  int n, p;
  bool prime[N];
  vector<int> v1, v2;

  memset(prime, true, sizeof(prime));

  for(int i = 2; i*i <= N ; i++){
    if(prime[i]){
      for(int j = 2*i ; j <= N ; j+=i){
        prime[j] = false;
      }
    }
  }
  
  while(true){ 
    cin >> n >> p;
    if(n==-1 && p ==-1) break;
    int index=0;
   
    v1.clear();
    v2.clear();
   
    int cnt=0;
    for(int i = n+1 ; cnt < p ; i++){
      if(prime[i]){
        v1.pb(i);
        cnt++;
      }
    }
    
    rep(i,p){
      REP(j,i,p){
        v2.pb(v1[i]+v1[j]);
      }
    }

    sort(v2.begin(), v2.end());

    cout << v2[p-1] << endl;
  
  }

}