随笔分类 - 算法
摘要:算术基本定理,又称为正整数的唯一分解定理,即:每个大于1的自然数均可写为质数的积,而且这些素因子按大小排列之后,写法仅有一种方式。例如:证明略(其实是我不懂我会乱说XD),如果需要证明就百度吧,上面有相关证明。简而言之,唯一分解定理就是说任意一个大于1的自然数都可以写为几个素数的幂的乘积。记住这个就足够了(不困难嘛)。在简单的了解了唯一分解定理后,思考一个问题,如何求小于等于n的自然数中与n互质的数的数量(好绕口),简单说就是,在[1,n]区间中与n互质的数有多少个(这下好多了),欧拉函数就是这个东西了,表示在[1,n]区间中与n互质的数的数量。既然我们前面讲了唯一分解定理,那么通过直觉可以证
阅读全文
摘要:先来看看如何(快速)求幂求a的n次幂,最直接的想法就是把a连续乘n次,这思路自然是正确的,但是时间复杂度是O(n)的,比起快速幂的O(lg n)的算法简直不能忍,所以下面就要介绍快速幂啦。快速幂顾名思义就是很快的求幂(废话!),我在网上其他地方看的有关位运算的快速幂感觉理解不能啊,所以我用了一种我觉得稍微好理解一点的方法(二分求幂),二分求幂是将原有的a^n分为a^(n/2)*a^(n/2),而a^(n/2)只用计算一次,原结果为a^(n/2)*a^(n/2)(由于代码中为整除,所以指数如果是奇数的话还要再乘上一个a),所以自然减少了时间复杂度。先上代码1 int pow(int a,int
阅读全文
摘要:什么是GCD? GCD是最大公约数的简称(当然理解为我们伟大的党也未尝不可)。在开头,我们先下几个定义:①a|b表示a能整除b(a是b的约数)②a mod b表示a-[a/b]b([a/b]在Pascal中相当于a div b)③gcd(a,b)表示a和b的最大公约数④a和b的线性组合表示ax+by...
阅读全文
浙公网安备 33010602011771号