![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数论
文章平均质量分 79
gscsdlz
这个作者很懒,什么都没留下…
展开
-
数论知识点1——快速幂取模-LightOJ 1282
数论知识点1——快速幂取模-LightOJ 12821.快速幂的思路普通的幂运算操作是时间复杂度是O(n),这个速度的确很快,但是当n比较大的时候,普通的写法就会超时,我们考虑将ab这种形式,我们把b(也就是指数),看成二进制的,比如a22次方,22代表的是10110,那么我们可以把a22 => 转换为 a16 * a4 * a2 ,很明两者是等价的,因为16 + 4 + 2 == 22。这个表达式的原创 2016-07-12 10:00:48 · 1339 阅读 · 0 评论 -
数论知识点2——素数筛法-HDOJ 2136
数论知识点2——素数筛法1.素数筛法 在判断素数的时候,如果是小范围的,查询次数比较少的判断,一般是使用循环到sqrt(n)之前,判断是否能够整除,但是如果数据量很大一般用miller_rabbin算法,这里想说的是,数据量不大,十万到百万左右,但是查询次数比较多的情况,这时候一般使用埃式筛法,先打一张表之后就随便使用了,每次查询都是O(1),而筛法虽然是双重for循环但是实原创 2016-07-13 12:01:43 · 716 阅读 · 0 评论 -
POJ 2689 素数打表再打表
POJ 2689 素数打表再打表1.题意 告诉你一个区间L和U,问这个区间内的素数的最短距离,和最长距离,最短和最长距离的定义都是两个素数的差值的极值,有多组的情况下,输出第一次出现的那组,如果这个区间里面的素数小于2个,就输出 There are no adjacent primes. 有一些条件,比如L和U的值在1 ~ 2147483647之间,但是呢,L原创 2016-07-25 14:27:23 · 404 阅读 · 0 评论 -
数论知识点3——欧拉函数
数论知识点3——欧拉函数1.欧拉函数 指的是不超过n且与n互为素数的正整数的个数,并且如果n是一个素数,欧拉函数的值就等于n - 1,比如对于12来说,1, 5,7,11与它互质,GCD为1,所以φ(12) = 4;通式为φ(x) = x * (1 - 1 / p1) * (1 - 1/p2) * (1 - 1/p3)其中,p为x的素因子,例如对于12来说,素因子是2 3,所原创 2016-07-25 16:26:30 · 625 阅读 · 0 评论 -
挑战程序设计解题报告 2.6.2素数
挑战程序设计解题报告 2.6.2素数1.POJ 31262.POJ 34213.POJ 3292原创 2016-07-18 16:36:16 · 538 阅读 · 0 评论 -
挑战程序设计解题报告 2.6.3快速幂运算
挑战程序设计解题报告 2.6.3快速幂运算1.POJ 3641 题意介绍了一种理论即费马小定理,费马小定理指出若p是一个素数,那么对于任意的整数a(a > 1),都有ap =a (mod p),通俗的讲就是a的p次方对p取余结果是a,这道题问的是费马小定理的逆定理,但是逆定理不一定成立,有少部分数据,不是一个素数,但是满足ap =a (mod p),称这些数字为基于原创 2016-07-18 21:02:39 · 444 阅读 · 0 评论 -
挑战程序设计解题报告 2.6.1辗转相除法
挑战程序设计解题报告 2.6.1辗转相除法1.POJ 2429 这道理的意思就是告诉你GCD和LCM让你求原数,但是有个问题,很明显有很多情况,所以题目要求输出满足a+b最小的情况,怎样才能最小呢,已知GCD(a, b) == n, lcm(a, b) == m,那么a * b == n / m(由GCD和LCM的定义可知),问题变成了找到两个数a,b使得a * b == n原创 2016-07-20 17:57:50 · 564 阅读 · 0 评论