プライムふるい(ふるいヨーロッパ)
ヨーロッパの篩(ふるいユークリッド)
この方法は、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の>