數論之 素數

2021-08-20 03:25:07 字數 671 閱讀 8422

素數又叫質數,乙個數除了1和他本身沒有其他因子的叫素數。

最一般的判斷素數寫法:

bool prime(int x)

return

true;

}

快點的n開平方的複雜度
bool prime(int x)   //這是開平方的寫法,減小了查詢範圍。

return

true;

}bool prime(int x) //這是乘的寫法,讓i相乘去和x比較

return

true;

}

如果讓求1~n內的所有素數怎麼快速高效求出呢?

這就需要埃式篩選,簡稱埃篩。

**:

const

int max_n=1e5;

int prime[max_n]; //記錄素數

bool isprime[max_n]; //為true表示i為素數

void sieve(int n)

}}

求n的質因子

int

m[1000];

void init(int n) //n的質因子打表

}if(n>1)

m[k++]=n;

}

數論基礎之素數,約數

關於約數 唯一分解定理 任何數都可由素因子之積構成 int p 100 a 100 cnt void divide int n if n 1 for int i 1 i cnt i cout 方法2 離線做法,預處理出乙個質因子樹。預處理o nlogn 查詢乙個數o logn void init v...

數論 素數測試

檢查乙個正整數是否是素數稱作素數測試。基本素數判別法 正整數n是素數,當且僅當它不能被任何乙個小於根號n的素數整除 埃拉託斯尼斯篩法 先把n個自然數按次序排列起來。1不是 質數,也不是 合數,要划去。第二個數2是 質數留下來,而把2後面所有能被2 整除的數都劃去。2後面第乙個沒劃去的數是3,把3留下...

數論1 素數 約數 反素數

素數是指只能被自身整除和被1整除的數 大於1的自然數,1不是素數 不是素數的數為合數 常見的題型有 素數的判定 素數的篩選兩種題型 素數的篩選 const int n 1000001 int primes n cnt primes存素數 cnt 存素數的個數 bool st n 存數n是否被篩過 v...