BZOJ 3667: Rabin-Miller算法 Description Input 第一行:CAS,代表数据组数(不大于350),以下CAS行,每行一个数字,保证在64位长整形范围内,并且没有负数。你需要对于每个数字:第一,检验是否是质数,是质数就输出Prime 第二,如果不是质数,输出它最大的 ...
分类:
编程语言 时间:
2016-05-21 18:48:15
阅读次数:
269
转载自:http://www.dxmtb.com/blog/miller-rabbin/ 普通的素数测试我们有O(√ n)的试除算法。事实上,我们有O(slog³n)的算法。 定理一:假如p是质数,且(a,p)=1,那么a^(p-1)≡1(mod p)。即假如p是质数,且a,p互质,那么a的(p-1 ...
分类:
编程语言 时间:
2016-05-21 15:45:36
阅读次数:
265
传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=3667
思路:首先我们说说Miller_Rabin算法
我们发现了费马小定理
那它倒过来对不对呢
如果a^(p-1)=1(mod p),那么p一定是素数吗?
很不幸,是错的
虽然出错概率很低,但是可以被卡
于是我们就给它打补丁
我们又找到了一个二次探测的方法
如果p是质数,那...
分类:
编程语言 时间:
2016-05-13 00:37:34
阅读次数:
288
首先需要知道两个定理: 1: 费马小定理: 假如p是素数,且gcd(a,p)=1,那么 a(p-1)≡1(mod p)。 2:二次探测定理:如果p是素数,x是小于p的正整数,且,那么要么x=1,要么x=p-1。 证明:这是显然的,因为相当于p能整除,也即p能整除(x+1)(x-1)。 由于p是素数, ...
分类:
编程语言 时间:
2016-05-07 12:59:24
阅读次数:
2927
1037 最长的循环节 V2 基准时间限制:1 秒 空间限制:131072 KB 分值: 320 难度:7级算法题 收藏 关注 收藏 关注 正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数。 1/6= 0.1(6) 循环节长度为 ...
分类:
编程语言 时间:
2016-05-04 01:09:24
阅读次数:
377
文章修改不会置顶看着真难受… ⑤miller-rabin 记n-1=a*2^b。在[1,n)中随机选取一个整数x,如果x^a≡1或x^(a*2^i)≡-1(其中0 #include #include #include #include #include #include #include #incl... ...
分类:
其他好文 时间:
2016-04-20 00:15:57
阅读次数:
275
这种质数算法是基于费马小定理的一个扩展。 费马小定理:对于质数p和任意整数a,有a^p ≡ a(mod p)(同余)。反之,若满足a^p ≡ a(mod p),p也有很大概率为质数。 将两边同时约去一个a,则有a^(p-1) ≡ 1(mod p) 也即是说:假设我们要测试n是否为质数。我们可以随机选 ...
分类:
其他好文 时间:
2016-04-10 00:57:19
阅读次数:
384
题目链接 题意:题目定义了Carmichael Numbers 即 a^p % p = a.并且p不是素数。之后输入p,a问p是否为Carmichael Numbers? 坑点:先是各种RE,因为poj不能用srand()...之后各种WA..因为里面(a,p) ?= 1不一定互素,即这时Ferma ...
分类:
其他好文 时间:
2016-04-08 19:56:11
阅读次数:
180