prime

#include <iostream>
using namespace std;

#define int_sqrt\
    b=(d=0x0000000080000000);\
    if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;d>>=1;\
    b|=d;if((b*b)>n) b^=d;

unsigned long long n,a,b,d;

bool n_prime(){
    if(n<4) return (1<n);
    if(!(n%2&&n%3)) return false;
    int_sqrt;a=1;--b;
    while(a<b){
        a+=4;
        if(!(n%a)) return false;
        a+=2;
        if(!(n%a)) return false;
    }
    return true;
}

int main(){
    for(n=0x8000000000000000;n<0xfffffffffffffff0;++n){
        if(n_prime()) cout<<n<<'\n';
    }
}

 

posted @ 2016-04-02 17:35  141421356  阅读(255)  评论(0)    收藏  举报