随笔分类 -  数学--素数

摘要:求因子数: LL Getn(LL x){ LL ret = 1; for(LL i = 2; i * i <= x; i++){ if(x % i == 0){ LL a = 0; while(x % i == 0){ x /= i; a++; } ret = ret * (a + 1); } } 阅读全文
posted @ 2020-02-07 20:44 _Ackerman 阅读(625) 评论(0) 推荐(0)
摘要:如果要对比较大的整数分解,显然之前所学的筛选法和是试除法都将不再适用。所以我们需要学习速度更快的Pollard_Rho算法 pollard_rho 算法流程 Pollard_rho算法的大致流程是 先判断当前数是否是素数(Miller_rabin)了,如果是则直接返回。如果不是素数的话,试图找到当前 阅读全文
posted @ 2019-08-14 21:46 _Ackerman 阅读(587) 评论(0) 推荐(0)
摘要:Miller_rabin算法,优势可以单独判断一个大数是否素数。缺点他是一个不保证正确的算法,我们只能通过多次执行算法让这个错误的概率很小,不过幸运的是通常来看它的错误概率可以小到忽略不计。 Miller_rabin算法描述 首先要知道费马定理只是n是素数的必要条件。即费马定理不成立,n一定是合数; 阅读全文
posted @ 2019-08-14 21:33 _Ackerman 阅读(1842) 评论(0) 推荐(0)
摘要:题目链接:https://cn.vjudge.net/contest/319720#problem/B 题意:给出两个数 n、c,求从 1~N 的素数序列,若素数个数为奇数,则输出序列中心的 2*c-1 个素数,若为偶数,则输出序列中心的 2*c 个素数。若 c 大于素数个数,则输出整个序列。 思路 阅读全文
posted @ 2019-08-13 20:38 _Ackerman 阅读(222) 评论(0) 推荐(0)
摘要:题目链接:https://cn.vjudge.net/contest/319720#overview 题目大意:输入两个数L和U(1<=L<U<=2 147 483 647),要找出两个相邻素数C1和C2(L<=C1<C2<=U)是距离最小的,如果相邻素数不止一对,选择最初的,还要找出两个相邻的素数 阅读全文
posted @ 2019-08-13 20:33 _Ackerman 阅读(615) 评论(0) 推荐(0)
摘要:素数又叫做质数,即除了1和其本身之外,不存在其他的因数。 最简单的一个判断是不是素数的方法,就是从2开始一直到该数-1 如果中途出现了一个数i 可以被该数整除,那么就说明这个数不是素数 程序也很简单只需要一个for循环就可以实现 bool prime(int x) { if (x <= 1) ret 阅读全文
posted @ 2019-06-20 01:05 _Ackerman 阅读(266) 评论(0) 推荐(0)