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 ...
随机推荐
- java之Comparator与Comparable
转自:http://blog.csdn.net/zhangerqing 当需要排序的集合或数组不是单纯的数字型时,通常可以使用Comparator或Comparable,以简单的方式实现对象排序或自定 ...
- Shell脚本高级应用 --实现远程MySQL自动查询[转
#!/bin/sh Host=192.168.5.30 User=abccdef PW=123456 MSG=`mysql -h$Host -u$User -p$PW <<EOF show ...
- 七周七语言——Prolog(二)
1 递归 首先来看一个知识库: father(zeb,john_boy_sr). father(john_boy_sr,john_boy_jr). ancestor(X,Y):-father(X,Y ...
- 模板类之间的友元关系实现Blob和BlobPtr
16.12编写你自己版本的Blob和BlobPtr模板,包含书中未定义的多个const成员. Blob.h(注意,成员函数的声明和定义要放在一个头文件中) /*记住,模板的头文件中通常既包括声明也包括 ...
- android开发之Bundle使用
android开发中,我们经常需要在两个activity之间传递数据,最常用的莫过于使用intent.putXXX(),可是很多时候我们也会这样: Bundle bundle = new Bundle ...
- Microsoft Visual Studio Professional 2012 专业版 下载
记录(以下内容来自网络收集): 下载地址: https://www.microsoft.com/zh-cn/download/details.aspx?id=30682 直接iso连接下载址: htt ...
- checkbox复选框
改变checkbox状态 所有的jquery版本都可以这样赋值:// $("#cb1").attr("checked","checked") ...
- Java动态调用webService,axis2动态调用webService
Java动态调用webService axis2动态调用webService >>>>>>>>>>>>>>>& ...
- C#当中的多线程_线程池
3.1 简介 线程池主要用在需要大量短暂的开销大的资源的情形.我们预先分配一些资源在线程池当中,当我们需要使用的时候,直接从池中取出,代替了重新创建,不用时候就送回到池当中. .NET当中的线程池是受 ...
- 不安装oracle客户端,连接到服务器的oracle (注:针对 odp.net)
前几天在研究怎样不安装oracle客户端去访问oracle,并把里面的数据同步到本地的Sql Server数据库中. 准备工作:首先你得有如下.dll,我这个是针对oracle10g的,如果是更高的版 ...