The largest prime factor(最大质因数)
1. 问题:
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
2. 解法(by java in Eclipse)
package com.lun.alrithmetic;
/*
* Q1: what's the primary factor? (1 2 3)
* Q2: i & i+2ne能否遍历出所有质数
*/ public class LargestPrimeFactor { public static void main(String[] args) {
// TODO Auto-generated method stub
long n = 600851475143L;
System.out.println("The largest prime factor of the number '600851475143' is "+largestPrimeFactor(n));
} public static boolean isPrime(long n){
if(n<4)
return n>1;
if(n%2==0 || n%3==0)
return false;
for(long i=5; i*i<n; i+=6)
if(n%i==0 || n%(i+2)==0)
return false;
return true;
} public static long largestPrimeFactor(long n){
if(n%2==0){
while(n%2==0)
n /= 2;
}
if(n%3==0){
while(n%3==0)
n /= 3;
}
for(int i=5; i*i<n; i+=6){
if(n%i==0){
while(n%i==0)
n /= i;
}
int j = i+2;
if(n%j==0){
while(n%j==0)
n /= j;
}
}
return n;
}
}
way1
package com.lun.alrithmetic;
/*
* Question: What's the largest prime factor of the number '600851475143' ?
* Function: Divide & Conquer, analyse prime factor
*/ public class LargestPrimeFactor2 { public static void main(String[] args) {
// TODO Auto-generated method stub
long n = 600851475143L;
System.out.println("The largest prime factor of the number '600851475143' is "+largest(n));
} public static boolean isPrime(long n){
if(n<4)
return n>1;
if(n%2==0 || n%3==0)
return false;
for(long i=5; i*i<n; i+=6)
if(n%i==0 || n%(i+2)==0)
return false;
return true;
} public static long largest(long n){
if(isPrime(n))
return n;
else{
if(n%2==0)
return largest(n/2);
if(n%3==0)
return largest(n/3);
for(long i=5; i*i<n; i+=6){
if(n%i==0)
return largest(n/i);
if(n%(i+2)==0)
return largest(n/(i+2));
}
} return 1;
} }
way2
注:利用分解质因数的方法,从小向大用质数整除(如果此质数恰好是n的因数的话)n,即不断的减小n的规模,最后即可求的最大质因数。
法二,采用了递归的方法易于理解,但是内存消耗较大;建议用法一。
The largest prime factor(最大质因数)的更多相关文章
- R语言学习——欧拉计划(3)Largest prime factor 求最大质因数
The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...
- 【沙茶了+筛选保存最大质因数】【HDU2136】Largest prime factor
Largest prime factor Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Oth ...
- Largest prime factor
problem 3:Largest prime factor 题意:求600851475143的最大的质因数 代码如下: #ifndef PRO3_H_INCLUDED #define PRO3_H_ ...
- [暑假集训--数论]hdu2136 Largest prime factor
Everybody knows any number can be combined by the prime number. Now, your task is telling me what po ...
- HDOJ(HDU) 2136 Largest prime factor(素数筛选)
Problem Description Everybody knows any number can be combined by the prime number. Now, your task i ...
- (Problem 3)Largest prime factor
The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...
- 2136 Largest prime factor(打表)
Problem Description Everybody knows any number can be combined by the prime number.Now, your task is ...
- Problem 3: Largest prime factor
The prime factors of 13195 are 5, 7, 13 and 29. What is the largest prime factor of the number 60085 ...
- 【ACM】Largest prime factor
/*打表把素数能组合的数先设置成相应的位数*/ /* if n equals two and n is No.1 position of prime factors so four position ...
随机推荐
- [一位菜鸟的COCOS-2D编程之路]COCOS2D中得动作,特效和动画
一,CCActionManager 管理所有节点动作的对象 来看看打飞机里面的一个onEnter 方法 - (void)onEnter { [super onEnter]; //一定要注意添加此方法, ...
- iOS使用技能 - 短信,语言验证码的获取与验证小结
最近有学习一个小技能,这里小结一下,分享给大家,互相交流. 首先是大体步骤: 在mob官网注册,然后添加短信验证的应用 使用cocoapods导入框架 Podfile文件: platform :ios ...
- easyui常用控件样式收藏
CSS类定义: div easyui-window window窗口样式 属性如下: 1) modal:是否生成模态窗口.tru ...
- EasyUI-在行内进行表格的增删改操作
第一篇笔记中记录了如何实现表格的增删改,那个是点击之后跳出来一个对话框然后进行的,这里是在表格本身上进行的操作,也很简单,但是这里发现一个版本问题,也可以说是兼容性问题. 1.首先我们看引用的js和c ...
- LabVIEW设计模式系列——普遍使用值改变事件
标准: 1.当使用值改变事件时,使用单击时触发或者单击时释放开关动作.这样即保证仅仅触发一次,也保证按钮恢复默认值 标准:1.值改变事件的优点:不论是鼠标动作还是键盘动作都能触发值改变事件,增强了程序 ...
- myeclipse2014新感悟
部署有两种方式:1.直接把文件拷贝到 tomcat下的webroot文件夹下 2.myeclipse软件内部点击“deploy”部署 →点击add→tomcat下的webroot文件夹下 点击完“运行 ...
- 关于tomcat的思考
下载文件两种方式:绿色版的.安装版的(找到jre的环境变量.配置或修改端口8080→8070) 启动完tomcat之后: 既可以虚拟目录打开(如http://localhost:8070/mldn/) ...
- WSDL阅读方法
我们以天气预报WebService服务为例,来看看怎么阅读一个wsdl文档. 打开一个wsdl文档后,先看底部. binding在这里: portType在这里: 好了,看了上面的,我们来说说wsdl ...
- Android开发之UI更新交互机制与实例解析
android开发过程中,经常需要更新UI的状态和文案等.这是就需要对UI进行 更新.在android中更新UI一般有三种方法,handler机制.RunOnUiThread方法以及AsyncTask ...
- at91sam9x5 linux 4.1.0下dts驱动编程模型
测试环境: CPU: AT91SAM9X35 Linux: Atmel提供的linux-at91-linux4sam_5.3 (Linux-4.1.0) 转载请注明: 凌云物网智科嵌入式实 ...