Wymyśliłem sito do znajdowania liczb pierwszych.Korzystam z rekurencji i czynników pierwszych.Ponieważ nie znalazłem nic w necie o takim podejściu jestem ciekawy opinii i uwag.Co ciekawe kosztowność czasowa tego algorytmu jest idealnie liniowa a czas wykonywania podobny do sito Atkina . 
#include <iostream>
using namespace std;
long long maxlp=0;
bool S[10000001];
long long lp[800000]={2};
long long n;
long long licznik=0;
void sito(long long l,long long start)
{
for(int i=start;i<=maxlp;i++)
{
long long lpom=l*lp[i];
if(lpom<=n)
{
S[lpom]=false;
sito(lpom,i);
}
else
return;
}
}
int main()
{
cin >> n;//Zakres 3-10000000
for(long long i = 0; i <=n; i++)
S[i] = true;
sito(1,0);
cout <<2<< " ";
for(long long i = 3; i <=n; i++)
if(S[i])
{
maxlp++;
lp[maxlp]=i;
cout <<i<< " ";
sito(i,0);
}
cout <<endl;
}