uva 10392 Factoring Large Numbers

来源:互联网 发布:网络信息安全事故 编辑:程序博客网 时间:2024/05/16 10:00

      这道题就是把一个数质因数分解,数据范围是long long,有迷惑性。刚开始想从2到这个数的开方数取余看是否正除来判断质因数,这样肯定超时,然后又想求出sqrt(LONG_LONG_MAX)以内的所有质数,然后再判断,虽然这样判断快,但求素数肯定就超时。

      没有了思路去翻书,先看的素数判定,要用费马小定理和二次探测定理,所实话没怎么看明白,然后又去看整数因数分解,有个Pollard的算法,但写出来后是个死循环,没调出来。

      最后在网上查整数因式分解,看到一篇博客《超强因式分解,比pollard-rho算法 更快》,吓了一跳。看了看它的程序,和我刚开始的思路一样的,这怎么可能。我自己写了一遍,效率很差,但运行它的却快多了,经过仔细的比对发现,其实就是一个判别条件的差别:我的是:middle = (int)sqrt(n);for(i = 2; i <= middle; i++),他的是:for(i = 2; i <= (int)sqrt(n); i++),这样差距就显现出来了,前面的middle不变,而后边的n在逐渐减小。其实这个思路也有过,但没想到效率改变这么大…囧…

      这道题虽然花费了不少时间,但也挺值得。到了后边的数论,素数判定的两个定理和Pollard算法肯定要用的,现在先学了,虽然看不太懂,但时间长了就理解了,到后边再做题加深理解……

程序代码:

 

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 4个月宝宝认人怎么办 2岁宝宝语言迟缓怎么办 宝宝老是哭闹不睡觉怎么办 7岁儿童说话晚怎么办 一岁多的婴儿说话晚该怎么办 宝宝甲低300多怎么办 两岁半宝宝还不怎么会讲话怎么办 宝宝两岁半了还不讲话怎么办 两岁宝宝怕生人怎么办 四岁宝宝不说话怎么办 1岁宝宝牙齿黄斑怎么办 儿子俩周半了就是不说话怎么办 两岁宝宝牙齿上有黑渍怎么办 两岁宝宝牙齿发黑怎么办 求帮助宝宝刷牙不会漱口怎么办 牙膏不小心吞了怎么办 宝宝误吃了牙膏怎么办 宝宝吃了30g牙膏怎么办 孩子把牙膏吞了怎么办 二岁宝宝有蛀牙怎么办 3岁宝宝有蛀牙了怎么办 三岁宝宝夜惊怎么办 小班孩子跳舞不好好跳怎么办 15个月宝宝拉稀怎么办 孩子学习不认真该怎么办 孩子学习不自觉该怎么办 孩子学习压力大该怎么办 分手发信息不回怎么办 两岁宝宝不会回答问题怎么办 分手了我还想他怎么办 两岁宝宝特别不听话怎么办 2岁宝宝争东西怎么办 两岁宝宝钙吸收不好怎么办 1岁宝宝害羞胆小怎么办 2岁宝宝害羞胆小怎么办 6个月的宝宝胆小怎么办 3岁半宝宝很胆小怎么办 分手了想他了怎么办 分手了还想联系怎么办 2岁多宝宝不长肉怎么办 2个月宝宝尿裤子怎么办