素数与整除问题
文章平均质量分 75
林伏案
妖蛾子良多的范老爷
展开
-
uva1635(唯一分解定理,杨辉三角二项式递推公式)
/*translation: 题意见lrj,p320solution: 唯一分解定理,杨辉三角迭代公式 根据杨辉三角的迭代公式即可很容易得出最后一项的每一项系数。根据是否能够整除m,就可以得出这一项是否跟 最后的结果有关。但是问题在于最后一项的数据范围太大,必须用高精度才能保存。所以直接对m取余来求解是行 不通的。所以就必须用唯一分解定理:对m进行素因子分解,然后对于每一项m的素因原创 2016-09-26 12:23:27 · 1246 阅读 · 1 评论 -
poj3641(快速幂,以及素性测试方法的总结)
/*translation: 给出一个数,判断其是否是伪素数。一个数是伪素数满足下面两个条件: 1,p不是素数。 2,满足费马定理a^p==a(mod p)solution: 快速幂简单题。 快速幂计算,然后朴素素性测试即可note: * 总结下素性测试的几个方法 1:朴素素性测试(反复平方法) 即从2~根号n根据素数的性质判断,如果有数字能够整除N.说明n不是素数。复杂度原创 2016-10-28 16:43:45 · 263 阅读 · 0 评论 -
poj3126(埃氏筛法,双向bfs)
/*translation: 给出一个4位素数,要将其转化为另外一个指定的素数。每次只能改变其中一位数字,且期间所有的数字全为素数。 问最少要经过多少步骤?solution: 埃氏筛法,双向bfs 打个表,再广搜一下即可,水题。为了提高下难度,所以改用双向广搜。0ms过!note:date: 2016.10.28*/#include #include #include原创 2016-10-28 11:43:55 · 497 阅读 · 0 评论 -
poj3421(多重集排列,唯一分解定理)
/*translation: 给出一个数,求能够形成的x数链最长是多少?(x数链是指以1开始,以n结尾,其中任意相邻的两个数,前面的数都能整除后面)solution: 多重集排列计数,唯一分解定理 由x数链的性质可以发现,将n分解为其质因数相乘的形式后,数链中任何一个数必定是这些质因数的某个组合,且任意相邻的2个质因数 中后面的数必定是在前面的数的质因数的组合的基础上再乘上另外的一个质原创 2016-10-27 21:05:39 · 681 阅读 · 0 评论 -
poj2429(miller_robin算法和pollard分解质因数)
/*translation: 给出两个数的gcd,lcm的值,求两个数分别是多少?有多解时输出两数和最小的一组。solution: miller-robin和pollard素因子分解算法 这道题可以参考poj1811(模板),根据规律a*b == gcd(a,b)*lcm(a,b)很容易想出分解质因数 然后凑出a,b来暴力比较求出答案。但是由于数据范围太大。所以常规的素数分解算法不行。原创 2016-10-26 17:40:47 · 1834 阅读 · 0 评论 -
poj1811(miller_robin和pollard分解因数的随机性算法)
/*translation: 题意很简单,给定一个数,判断其是否为素数。如果不是素数,还需要给出最小的素因子。solution: 这道题不能用常规的素数算法来做,因为肯定超时。所以需要用到一种随机性算法。 称之为Miller_robin算法。该算法可以在一定的错误概率内判断一个数是否为素数。求最小的 素因子也需要用到另外一种随机性算法pollard-rho算法。该算法可以随机性地将一个原创 2016-10-26 15:12:00 · 309 阅读 · 0 评论 -
poj1845(唯一分解定理,等比数列求和,约数个数公式)
/*translation: 输入两个数A,B。求A^B%9901的值solution: 唯一分解定理, 首先将a进行质因数分解,存储在factor二维数组当中。其形式可以描述为: p1^q1 * p2^q2 *...* pn^qn。而后要求所有因子的和,可以用到公式: 约数个数=(1+p1+p1^2+...+p1^q1)...(1+pn+pn^2+pn^qn)。根据这个 公式,再原创 2016-10-13 21:06:58 · 747 阅读 · 0 评论 -
poj3292(筛选法)
/*translation: 一个H-number是所有的模四余一的数。如果一个H-number是H-primes 当且仅当它的因数只有1和它本身(除1外)。 一个H-number是H-semi-prime当且仅当它只由两个H-primes的乘积表示。H-number剩下其他的数均为H-composite。 给你一个数h,问1到h有多少个H-semi-prime数。solution:原创 2016-10-12 22:04:28 · 278 阅读 · 0 评论 -
poj2635(大整数求余)
/*translation: 输入两个数K,L。其中4 <= K <= 10^100 2 <= L <= 10^6。k是两个素数的乘积,现在要求检测这两个数是否都大于L。solution: 同余模运算,大整数求余,埃氏筛法。 首先可以很容易想到用埃氏筛法求出素数表,然后遍历检查是否是k的因子。但关键在于k的数字太大,怎么表示是个问题。解决办法是 用一个字符类型的数组来表示。并转换成10原创 2016-10-12 19:49:15 · 322 阅读 · 0 评论 -
uva10820(欧拉函数,排列组合)
/*translation: 给定一个数n,任意两个元素组成的二元组(x,y).其中xy均小于n。任意两个二元组之间定不存在 (k*xi, k*yi) = (xj, yj);问这样的二元组有多少个。solution: 排列组合,欧拉函数 满足条件的二元组的两个元素之间肯定互素,如果两个元素不互素,肯定存在一个整数k使得有二元组 (x/k, y/k)。与题意相反。所以利用欧拉函数很容原创 2016-09-26 16:47:25 · 458 阅读 · 0 评论 -
poj1930(无限循环小数化成分数)
/*translation: 给出一个无限循环小数,把该小数改写成以最简分数表示的形式solution: 如果能够求出分数的表示形式的话,那么利用gcd就可以化简。但是想了好久没有想出怎么化成分数形式。 后来百度"无限循环小数化分数",在百科上找到了答案。套用百科上的第三种公式即可。note: # 一开始样例都过不了,后来发现小数部分的下标范围出现错误。改下就过了。 * 写了两个版原创 2016-10-31 22:07:07 · 1590 阅读 · 0 评论