莫度编程网

技术文章干货、编程学习教程与开发工具分享

数学建模|算法挑战003——Largest prime factor

每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,叫做这个合数的分解质因数。 分解质因数只针对合数。今天算法是关于质因数分解的,其中我们不仅要有一个函数用于判断质数,还要把一个比较大的数字分解出他的质因数,并得到那个最大的质因数。

A003. Largest prime factor

The prime factors of 13195 are 5, 7, 13 and 29.

What is the largest prime factor of the number 600851475143 ?

合数13195的质因数是5,7,13和29。那么,数字600851475143 的那个最大的质因数是什么呢?

分析:

判断一个数字是否是质数并不难,我们可以得到一个不大于600851475143一半的质数列表,不过首先也要判断600851475143是否是一个质数。假设这个数字能被一个质数n整除,那我们就可以逐步缩小质数的搜索范围,这样就可以节省一部分时间,而不是一直一点一点验证到底。

代码:

最后的结果是 [71, 839, 1471, 6857],最大值是6857

在做这个算法的过程中有很多地方值得思考,如何最大限度的缩小寻找质因数的范围,如果这个数字本身是质数怎么办,如果这个数字的是2048,那么这个算法还有效吗?除了计算600851475143之外,还可以计算一下和它相邻的几个数字,很快你就会发现自己算法的问题。当然,我的算法仍然不是最高效的。

下期预告:Largest palindrome product

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言

    Powered By Z-BlogPHP 1.7.4

    蜀ICP备2024111239号-43