学习笔记:日照day6数论总(meng)结(bi)
xjb谈一谈日照一中day6了….lsr&&hcy的水痘让人心慌慌…还有我为什么没带手机||笔记本嘞???上(tui)课(fei)的时候摆弄老年机可真是…. 唯一分解定理一个合数(>1)可以分成一堆质数(有重复)的积,记为x=π p[i]^a[i] p为x的质因子,a[i]为p[i]的个数(没有为0)上面这个优雅的式子被称为x的标准分解式 埃氏筛法筛法用于求一堆素数; bool v[MAXN];
int n;
int shai()
{
for(int i=2;i<=n;i++)
{
if(!v[i])
{
for(int j=2;j*i<=n;j++)
{
v[j*i]=true;
}
}
}
}
欧拉筛法埃氏筛法在会把一个合数筛许多次…所以速度偏慢…在一些玄妙的数据范围下会爆炸…于是就有了一个合数只被筛一次的欧拉筛法… bool v[MAXN];
int n;
vector<int> p;
int shai()
{
for(int i=2;i<=n;i++)
{
if(!v[i])
{
p.push_back(i);
}
for(int j=0;j<p.size()&&p[j]*i<=n;j++)
{
v[i*p[j]]=true;
if(i%p[j]==0)
{
break;
}
}
}
}
为啥i%p[j]==0的时候要break嘞?因为i是递增的,所以p里的素数大小也是递增的,所以i*p[j+1]这个数一定可以通过p[j]*某个i来筛掉(因为i里包含了p[j]),就没有必要通过p[j+1]筛了,所以跳出j的循环 gcd证明这么简单的东西宽嫂才懒得写代码呢… exgcd这个玩意已经学了半年了呢…然而基本还是蒙蔽的[我退役吧.jpg]… void exgcd (int a,int b,int &x,int &y)
{
if(!b)
x=1,y=0;
else
exgcd(b,a%b,d,y,x);
y-=(a/b ) x ;
}
嗯…今天差不多就酱…明天再更吧…. By 懵逼的 Cansult (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |