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
- Project Euler - Problem 3
- Project Euler problem 3
- project euler Problem 3
- Project Euler 3
- Project Euler - 3
- project euler 3
- Project Euler Problem 3
- Project Euler Question 3
- project euler 3
- Project Euler-3(素数问题)
- 【Project Euler】3 第三题
- Project Euler
- project euler
- Project Euler
- 【Project Euler】【Problem 3】Largest prime factor
- Project Euler -- 3 Largest prime factor
- Python计算Project Euler Problem 3
- 3 Largest prime factor - Project Euler
- UITabBarController
- 数组排序NSSortDescriptor
- Struts2从后台传递数据到前台的主要方法和流程
- Java中comparable和comparator接口的比较
- SVN的安装和更新
- Project Euler - 3
- 【线段树--区间修改】poj3468
- Hadoop+Mysql+hive安装步骤
- 怎么设置404错误跳转 在IIS
- 【BZOJ】【P1146】【CTSC2008】【网络管理Network】【题解】【整体二分+dfs序+树状数组】
- Java中的Timer和TimerTask在Android中的用法
- 微信支付开发关键点技术解析
- LiteIDE开发工具简明使用指南
- com/opensymphony/xwork2/spring/SpringObjectFactory.java:209:-1