上次素数程序增强版

template<
    bool R,
    long M,
    template<long>class T
>struct Selector_Ext
{
    typedef T<M>    RType;
};

template<
    long M,
    template<long>class T
>struct Selector_Ext<false,M,T>
{
    typedef typename Selector_Ext<T<M + 1>::IsPrime,M + 1,T>::RType    RType;
};

template<long N,long M = 2>struct Generate_Ext
{
    typedef typename Selector_Ext<Prime<M>::IsPrime,M,Prime>::RType    RType;
    static void Go(){        //generate the next N prime number(s) from M
        RType();
        Generate_Ext<N - 1,RType::Number + 1>::Go();
    }
};

template<long M>struct Generate_Ext<0,M>
{
    static void Go(){}
};

int main(){

    Generate_Ext<8,5>::Go();

}

产生从5开始的8个素数,即5,7,11,13,17,19,23,29。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值