欧拉计划第3题题解

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\)

posted @ 2020-02-17 17:17  quanjun  阅读(253)  评论(0编辑  收藏  举报