| 查看: 3685 | 回复: 18 | |||
| 本帖产生 7 个 程序强帖 ,点击这里进行查看 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
holmescn金虫 (正式写手)
|
[交流]
Euler 工程 第三题:寻找600851475143的最大质因子已有7人参与
|
||
|
昨天没有放出第三题,今天赶早补上。 前两个题目都比较简单了,只要会基本的数学和编程语言,就可以完成。 第三题就有点意思了。 第三题:寻找一个合数的最大质因数 对一个数(非质数)进行因数分解,比如13195=5x7x13x29。最大的质因数是29. 那么 600851475143 怎么分解呢?最大的质因数又是多少? [ Last edited by holmescn on 2011-5-12 at 15:06 ] |
» 猜你喜欢
心脉受损
已经有4人回复
博士读完未来一定会好吗
已经有13人回复
Springer期刊投稿求助
已经有4人回复
读博
已经有3人回复
小论文投稿
已经有3人回复
Bioresource Technology期刊,第一次返修的时候被退回好几次了
已经有9人回复
到新单位后,换了新的研究方向,没有团队,持续积累2区以上论文,能申请到面上吗
已经有8人回复
申请2026年博士
已经有6人回复
请问哪里可以有青B申请的本子可以借鉴一下。
已经有5人回复
» 本主题相关价值贴推荐,对您同样有帮助:
[原创]一种基于能带计算结果的载流子有效质量计算方法
已经有174人回复
质谱、色谱、光谱、波谱的区别和用途
已经有3人回复
匹多莫德口服液有关物质
已经有7人回复
Euler 工程 第廿九题:有多少不同的项?
已经有30人回复
Euler 工程 第廿四题:全排列的第100万项
已经有19人回复
Euler 工程 第十八题:三角阵上最大的和
已经有12人回复
Euler 工程 第十五题:从左上角到右下角有多少条路?
已经有5人回复
Euler 工程 第14题:找最长的数列
已经有9人回复
Euler Project Q13 欧拉工程第十三题
已经有20人回复
Euler Project Q12 欧拉工程第十二题
已经有23人回复
Euler 工程 第十一题:相邻元素乘积最大
已经有10人回复
Euler Project Q7. 欧拉工程第七题
已经有14人回复
Euler 工程 第六题:平方和与和的平方差多少?
已经有5人回复
Euler 工程 第二题:Fibonacci数列中小于4百万的偶数的和
已经有8人回复
★
小木虫: 金币+0.5, 给个红包,谢谢回帖
小木虫: 金币+0.5, 给个红包,谢谢回帖
|
这是我写的,只验证了一些数,结果是对的,对于600851475143也是对的,但是没有经过仔细验证,所以不敢保证绝对对的。 #include <stdlib.h> #include <map> #include <iostream> bool isPrime2(long n) { if(n < 2) return false; if(n == 2) return true; if(n % 2 == 0) return false; for(long i = 3; i < n; i += 2) { if(n % i == 0) return false; } return true; } void primeFactorDecomp(long long number, std::map<long, int> &primefactors) { int size = primefactors.size(); long beginprime = 2; long long numbercpy = number; int count = 0; if(size != 0) { std::map<long, int>::reverse_iterator rit = primefactors.rbegin(); beginprime = rit->first; if(beginprime == 2) beginprime += 1; else beginprime += 2; } while(!isPrime2(beginprime)) { beginprime += 2; if(beginprime > numbercpy) return; } while(! (numbercpy % beginprime)) { numbercpy /= beginprime; count++; } primefactors.insert(std::pair<long, int>(beginprime, count)); primeFactorDecomp(numbercpy, primefactors); } int main(int argc, char** argv) { long long number = 600851475143; std::map<long, int> primefactors; primeFactorDecomp(number, primefactors); std::map<long, int>::reverse_iterator rit = primefactors.rbegin(); std::cout << rit ->first << '\n'; return 0; } |
18楼2013-11-17 22:12:16













回复此楼