欧拉计划第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)

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