问题描述如下:
“13195的质因数(或者叫素因子,素因素)为5,7,13和29,求600851475143的最大质因数是多少?”
这里质因数的概念就不赘述了。
给出代码如下:
private static Long getTheLargestPrimeFactor(Long n) {
Long returnFactor = 1L;
for (Long factor = 2L; n > 1; factor++) {
if (n % factor == 0) {
n /= factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
}
}
return returnFactor;
}
可以得出答案6857。
判断的条件是不是可以有所变化呢,我们知道一个数的质因数不能大过一个数的平方根,将设一个数为n,其任何质因数primefactor <= n的平方根。
那就可以将判断条件修改,如下:
private static Long getTheLargestPrimeFactor1(Long n) {
Long returnFactor = 1L;
Double LargestFactor = Math.sqrt(n);
for (Long factor = 2L; factor <= LargestFactor; factor++) {
if (n % factor == 0) {
n /= factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
}
}
return returnFactor;
}
另外,是不是还有一些其他的方面有所改进呢?
我们考虑到2是所有质因数中唯一的偶数,可以在此方面下功夫,不说什么了,贴代码:
private static Long getTheLargestPrimeFactor2(Long n) {
Long returnFactor = 1L;
Long factor = 2L;
Double LargestFactor = Math.sqrt(n);
if (n % factor == 0) {
n = n / factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
} else {
factor = 3L;
}
for (; factor <= LargestFactor; factor += 2) {
if (n % factor == 0) {
n /= factor;
returnFactor = factor;
while (n % factor == 0) {
n /= factor;
}
}
}
return returnFactor;
}
到此结束,请不吝赐教!
@anthor ClumsyBirdZ
分享到:
相关推荐
600851475143最大的质因数是多少? 问题解决 这题我们可以利用质因数分解来解决。 首先,每个合数都可以写成几个质数相乘的形式,这几个质数都叫做这个合数的质因数.,比如8=2乘2乘2,2就是8的质因数.12=2×2×3,2...
题目给出了一个具体的例子,即13195的质因数为5、7、13和29,并要求找到600851475143的最大质因数。 - **关键知识点**: - **质因数分解**:将一个合数表示为其质因数的乘积的过程。 - **质数筛法**:常用的一种...
project_euler Project Euler 问题的解决方案 ###Problem 1 - 3 和 5 的倍数### 如果我们列出所有 10 以下...数600851475143 的最大质因数是多少? ###Problem 4 - 最大的回文乘积### 回文数的读法是一样的。 两个两
the_odin_project-project-euler1-3- ///最好由计算机解决 3 和 5 的倍数 问题 1 如果我们列出所有 10 以下是 3 或 5... 最大质因数问题3 13195的质因数分别是5、7、13、29。 数字 600851475143 的最大质因数是多少?
euler-解决方案JavaScript 中以下问题的解决方案。 问题 1:3 和 5 的倍数 如果我们列出所有 10 以下是 3 或 5 的倍数的自然数,我们得到 3、5、6 和 9。...数 600851475143 的最大质因数是多少? 欧拉问题:
在解决这个问题之前,我们需要理解两个概念:质数因子和质因数分解。 - **质数因子**:能够整除给定数字的质数。 - **质因数分解**:将一个正整数表示为若干个质数的乘积的过程。 ### 二、算法设计思路 #### 1. ...
#### 题目3:最大质因数 **题目描述:** 已知13195的质数因子有5、7、13和29。要求找出600851475143的最大质数因子。 **解析:** 要解决这个问题,我们可以从2开始逐个测试该数的质因数。每次找到一个质因数后,就...
3. **调用函数**:最后,我们可以调用`primeFactors`函数,传入我们要查找最大质因数的数,然后得到结果。 ```javascript const numberToCheck = 600851475143; const largestPrimeFactor = primeFactors...
这通常涉及到分解质因数的过程,即从最小的质数开始,不断除以该质数直到不能再被整除为止,然后继续下一个小于当前数的质数,直到找到最大质数因子。 **关键概念**: - **质数检测**:确保在分解过程中只使用质数...
leetcode 2 和 c 问题解决 在这里,您可以通过他们的解决方案找到许多编码问题。 NPTEL 作业中的问题 要找到给定半径值的圆的周长和面积。您应该在程序中使用 ...如果半径为零或小于零,则打印“请输入非...的最大质因数是
可以通过分解每个数的质因数,然后取每个质因数的最大幂次作为最小公倍数。 ```javascript function lcm(numbers) { const factors = {}; for (const num of numbers) { for (let i = 2; i ; i++) { while (num...