Project Euler - 3

来源:互联网 发布:安卓移动数据开关 编辑:程序博客网 时间:2024/05/24 06:08

欧拉项目 题目3
problem:  The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 600851475143 ?
solution:   这个问题是求质因子(n可以被600851475143整除,且自身是一个质数)。我们知道最小的质数是2,那么从2开始,一直用600851475143 整除factor,如果能整除就一直整除,这样可以保证这个较小质数的倍数不会再出现,比如一直除2,那么2最后除尽之后,不会再出现4的倍数,8的倍 数。 n /= facotr, 可以将要求的数一直变小,这样可以节省很多开销。最后当 n == factor 时,算得 n == 1, 结束循环, 由于最后一次factor多自加了一次,所以最后return需要先自减一次。


public static int findLargestPrimeFactor(long n) {int factor = 2;while (n > 1) {if (0 == n % factor) {while (0 == n % factor) {n /= factor;}}factor++;}factor -= 1;return factor;}


optimization: factor += (factor==2?1:2); 由于整除2的时候一定会把n整除为奇数,所以后面没有再自加为偶数的必要,所以选择自加2. 但是从第 一次2过渡到3时需要自加一,所以修改自加部分为:factor += (factor==2?1:2);

public static int findLargestPrimeFactor2(long n) {int factor = 2;while (n > 1) {if (0 == n % factor) {while (0 == n % factor) {n /= factor;}}factor += (factor==2?1:2);}factor -= 2;return factor;}




该博客是本人为平时练习算法积累的笔记,只为平时积累和交流使用,本人能力有限,有些代码非本人思路,特此声明!

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 仓鼠生完宝宝后怎么办 被金丝熊咬了怎么办 a字裙子没有内衬怎么办 踩过蟑螂的鞋子怎么办 宝宝给蚂蚁咬了怎么办 脚被蚂蚁咬肿了怎么办 孩子被蚂蚁咬了怎么办 家住高层有老鼠怎么办 久看手机眼睛疼怎么办 晚睡眼睛疼了怎么办 眼睛肿了有点痛怎么办 眼角两边长痘痘怎么办 坐动车行李超重怎么办 海康威视黑屏了怎么办 备孕喝酒抽烟了怎么办 鼻炎鼻子不通气怎么办速效办法 2岁宝宝智力落后怎么办 六个月宝宝尖足怎么办 3个月宝宝尖足怎么办 2岁宝宝发育慢怎么办 2岁宝宝便秘怎么办呀 2岁宝宝老是便秘怎么办 宝宝4岁不说话怎么办 宜家柜子味道重怎么办 家里有小飞虫怎么办呀 汽车里进老鼠了怎么办 老鼠跑到车里了怎么办 我的小车有老鼠怎么办 车里面进了老鼠怎么办 街电充电宝丢了怎么办 充电宝充不了电怎么办 脚裸扭伤肿了怎么办 大货车电瓶亏电怎么办 货车电瓶被偷了怎么办 小乌龟尾巴断了怎么办 长青春痘怎么办简单小妙招 一关灯就有蚊子怎么办 狗狗误食蟑螂药怎么办 泰迪误食蟑螂药怎么办 猫咪吃了蟑螂药怎么办 狗把蟑螂药吃了怎么办