/*
1. Liczby Super Pierwsze to takie liczby pierwsze, których pozycja na liście liczb pierwszych też jest liczbą pierwszą. Do optymalnego rozwiązania warto wykorzystać sito Eratostenesa. Przykładowo najmniejszą liczbą Super Pierwszą jest 3, ponieważ 3 jest drugą liczbą pierwszą, a 2 też jest liczbą pierwszą.
Napisz program wypisujący liczby super pierwsze z przedziału 2 do 10000 i podający ile jest takich liczb
2. Liczba super B pierwsza to superpierwsza, której w zapisie binarnym suma cyfr jest liczbą pierwszą np. 11 jest superpierwszą i w binarnym zapis to 1011 suma wynoci 3, a 3 jest liczbą pierwszą
Napisz program wypisujący liczby super B pierwsze z przedziału 2 do 10000 i podający ile jest takich liczb 
  */

#include <iostream>
using namespace std;
bool sito[10001];
void sitko(){
  for(int i=2;i<10001;i++) sito[i]=1;
  for(int i=2;i*i<=10001;i++){
    if(sito[i]==1)
      for(int j=i*i;j<10001;j=j+i) sito[j]=0;
      }
  }
bool pierwsza(int n)
{
  if(n<2)
    return false; 
  for(int i=2;i*i<=n;i++)
    if(n%i==0)
      return false; 
  return true;
}

int suma(int x){
  int s=0;
  while (x!=0){
    s+=x%2;
    x/=2;
  }return s;
}

int main() {

  sitko();
 

  int l=0;
  int s2=0;
  int s3=0;
 
  for(int i=2;i<10001;i++){
    if(sito[i]==1){
      l++;
    if(pierwsza(l)==1){
    s2++;
      cout<<l<<endl;
    if(pierwsza(suma(i)==1)){
      s3++;
      cout<<l<<endl;
    }
    }
    }
  }cout<<s2<<endl<<s3<<endl;
}  