问题描述如下:
“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
分享到:
相关推荐
19--[最大公因数和最小公倍数].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码19--[最大公因数和最小公倍数].zip源码scratch2.0 3.0编程项目源文件源码案例素材源代码19--[最大公因数和最小公倍数].zip源码...
第2版质因数程序的代码 PS:呃呃呃呃呃呃呃 第一次发这个东东,不知道为什么要写50以上的子 过1个月就付费!!!! 太难了吖 不过资源是好的 c++资源 如果你是学c语言的把头文件改成 然后把cin改成scanf 把cout改成printf ...
c++--1838 - 分解质因数
此程序可以找出你给的数的质因数,用java编译
关于分解质因数的程序设计.cpp
c语言编写分解质因数实现求解两个数的最大公约数
五年级数学上册-分解质因数课件.ppt
将正整数分解成质因数
五年级第二单元------因数和倍数.doc
600851475143最大的质因数是多少? 问题解决 这题我们可以利用质因数分解来解决。 首先,每个合数都可以写成几个质数相乘的形式,这几个质数都叫做这个合数的质因数.,比如8=2乘2乘2,2就是8的质因数.12=2×2×3,2...
可以对超过64位最大整数(18446744073709551615,约1845亿亿,20位十进制数)的整数分解质因数。原创的全部源代码共享。 使用了.NET库的“大整数”类。界面为 Win Form 程序使用确定性算法。 做了尽可能多的优化...
首先来看一个最简单的C语言实现质因数分解的列子: #include void main( ) { int data, i = 2; scanf("%d", &data); while(data > 1) { if(data % i == 0) { printf("%d ", i); data /= i; } else i++;...
奥数题--五年级分解质因数的应用.doc
压型AC-DC有源功率因数校正控制器的设计pdf,
Ruby分解质因数 博文链接:https://xavieror.iteye.com/blog/69016
1.将一个很大(最大为29位整数79228162514264337593543950335,即2^96-1)分解成最小的质因数并以指数结果显示,分解速度视情况而定,如果这个数的因数多,则较快,反之则慢. 2.将一个整数闭区间内的所有整数分解成最小的...
分解质因数法求最大公约数 输入两个正整数 以空格隔开 即可求得
c++实现质因数分解,主要是快速,因为分解用普通方法也可以,如何快速分解呢,答案是用筛选法先求出质数,然后分解质数就很快了
质因数(素因数或质因子)在数论里是指能整除给定正整数的质数,这里通过运行python程序分解质因数
五年级数学上册-分解质因数课件n.ppt