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