[アルゴリズム] - []ヨーロッパの素数のふるいふるい(共通)

プライムふるい(ふるいヨーロッパ)

ヨーロッパの篩(ふるいユークリッド)
この方法は、N / Mが最小素因数である場合、複合数の各々が、時間複雑度はO(N)であることを確認するためにスクリーニングすることができる
競争で、ほとんどのニーズを満たさなければなりませんこの方法はまた、非常に短時間でテーブル上の素数Nを決定することができます。
思想:最小素因数*最大の要因(非自分)=この合成数

コード

#include <stdio.h>
#include <string.h>
bool book[10000005];
int prime[10000005], p = 0;
int isPrime(int n)
{
    memset(book,true,sizeof(book));
    book[0] = false;
    book[1] = false;
    for(int i = 2; i <= n; ++ i){
        if(book[i]){
            prime[p ++] = i;
        }
        for(int j = 0; j < p && prime[j] * i <= n; ++ j){
            book[prime[j] * i] = false;
            if(!i % prime[j]){
                break;
            }
        }
    }
    return book[10000005];
}

注記

ふるい上の素数の使用に注意してください(ふるいヨーロッパ)(機能部)

注bool型は、C ++でのCは間ではありません

音符のmemset関数ヘッダファイル<string.hの>

公開された34元の記事 ウォンの賞賛2 ビュー907

おすすめ

転載: blog.csdn.net/Kapo1/article/details/103522102