摘要: 反素数问题描述:对于任何正整数x,起约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0<i<x),都有g(i)<g(x),则称x为反素数.现在给一个N,求出不超过N的最大的反素数.比如:输入1000 输出 840思维过程:求[1..N]中约数在大的反素数-->求约数最多的数如果求约数的个数 756=2^2*3^3*7^1(2+1)*(3+1)*(1+1)=24基于上述结论,给出算法:按照质因数大小递增顺序搜索每一个质因子,枚举每一个质因子为了剪枝:性质一:一个反素数的质因子必然是从2开始连续的质数.因为最多只需要10个素数构造: 阅读全文
posted @ 2011-08-05 21:13 qingyezhu 阅读(353) 评论(0) 推荐(0)
摘要: 原创帖!转载请注明作者 AekdyCoin !【普通Baby Step Giant Step】【问题模型】求解A^x = B (mod C) 中 0 <= x < C 的解,C 为素数【思路】我们可以做一个等价x = i * m + j ( 0 <= i < m, 0 <=j < m) m = Ceil ( sqrt( C) )而这么分解的目的无非是为了转化为:(A^i)^m * A^j = B ( mod C)之后做少许暴力的工作就可以解决问题:(1) for i = 0 -> m, 插入Hash (i, A^i mod C)(2) 枚举 i ,对于 阅读全文
posted @ 2011-08-05 16:31 qingyezhu 阅读(296) 评论(0) 推荐(0)