リニアふるいサブ統合

リニアふるい素数:

ボイド getxxs(INT N){
     ためINT iは= 2、I <= N; I ++ ){
        V [I] = 1 
    }
    以下のためにINT iが= 2 ; I <= N I ++ ){
         場合(V [I] == 1 ){
            プライム[ ++ NUM] = I;
        }
        以下のためにINT J = 1 ; J <=は&& iが素数[j]を* NUM <= N; J ++ ){
            V [iのプライム[jは*]] = 0 ;
            もし(I%プライム[j] == 0 ){
                 ブレーク
            }
        }
    }
}

リニアふるいオイラー機能:

ボイド getxxs(INT N){
     ためINT iは= 2、I <= N; I ++ ){
        V [I] = 1 
    }
    以下のためにINT iが= 2 ; I <= N; I ++ ){
         場合(V [I]){
            プライム[ ++ NUM] = I;
            非[I] = I- 1 
        }
        INT J = 1 ; iが素数[j]を* <= N && J <= NUM; J ++ ){
            V [iのプライム[jは*]] = 0 ;
            もし(I%プライム[j] == 0 ){
                PHI [Iプライム* [J] = PHI [i]は* プライム[J]。
                休憩;
            } {
                非[私は =非[I] *(プライム[J] - [J]プライム*] 1 )。
            }
        }
    }
}

メビウスふるい線形関数:

getxxs(INT N){
     ためINT iは= 2、I <= N; I ++ ){
        V [I] = 1 
    }
    MU [ 1 ] = 1 以下のためにINT iが= 2 ; I <= N; I ++ ){
         場合(V [I]){
            プライム[ ++ NUM] = I;
            ミュー[I] = - 1 
        }
        以下のためにINT J = 1 ; J <=は&& iが素数[j]を* NUM <= N; J ++ ){
            V [iのプライム[jは*]] = 0 ;
            もし(I%プライム[j] == 0 ){
                ミュー[私が総理* [J] = 0 ;
                休憩;
            } {
                ミュー[ *最初の[J] = - ムー[i]は、
            }
        }
    }
}

 

おすすめ

転載: www.cnblogs.com/passione-123456/p/11854699.html