同上一篇模板文章一样,本文依然是介绍一些在NOIP范围内常用到的数学方面的函数,希望对读者有所帮助。
以下列出目录:
①素数表/欧拉函数表/求某个欧拉函数
②欧几里得算法求最大公约数/拓展欧几里得求二元一次不定方程的一组整数解/求逆元
③唯一分解(将某数分解为质因数及指数的形式)
④递推求组合数
以下按顺序给出代码片段:
//筛法求MAXN范围以内的素数表,其中需要借用一个bool数组vis
void prime_table()
{
int i,j;
for(i = 2;i <= MAXN;i++)
{
if(!vis[i])
{
prime[++cnt] = i; //cnt为素数计数器
for(j = i*i;j <= MAXN;j += i)
vis[j] = true;
}
}
}
//高效算法同时打出prime表与phi表,比单独用筛法打出phi表与prime表快