码迷,mamicode.com
首页 > 其他好文 > 详细

欧拉计划第3题题解

时间:2020-02-17 18:06:08      阅读:105      评论:0      收藏:0      [点我收藏+]

标签:clu   return   代码   using   const   欧拉   and   答案   算法   

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最大的质因数是多少?

解题思路

分解质因数的算法是 \(O( \sqrt{n} )\) 的算法。

求一个数 \(a\) 的质因数,可以从 \(2\) 开始到 \(\sqrt{n}\) 去枚举每一个数 \(i\),然后只要 \(a\) 能够被 \(i\) 整除则一直除 \(i\)
循环结束的时候如果 \(a\) 没有被除尽(即:\(a\) 不为 \(1\)),则这个没有被除尽的部分就是最后一个 \(a\) 的质因数。

我们可以按照这种方案求解 \(600851475143\) 的最大的那个质因数。

实现代码如下:

#include <bits/stdc++.h>
using namespace std;
const int maxn = 100010;
long long cal(long long a) {
    long long res, b = sqrt(a);
    for (long long i = 2; i <= b; i ++) {
        if (a % i == 0) {
            res = i;
            while (a % i == 0) a /= i;
        }
    }
    if (a != 1) res = a;
    return res;
}
int main() {
    cout << cal(600851475143LL) << endl;
    return 0;
}

得到答案为 \(6857\)

欧拉计划第3题题解

标签:clu   return   代码   using   const   欧拉   and   答案   算法   

原文地址:https://www.cnblogs.com/quanjun/p/12322620.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!