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