利用递归求,今天灵感一来写了一段,结果通过了,但是我自己其实不是很理解这段代码哈哈哈 思想是不断分割出因子,找出大的返回,不过怎么能确定返回的因子一定是素数呢,我不理解哈哈

//获取最大素数因子
int get_prime_factor(int a) {
	//cout << "执行" << endl;
	if (a == 1 || a == 2)return a;
	for (int i = 2; i <= sqrt(a); i++) {
		if (a % i == 0) {
			return max(get_prime_factor(a/i), i);
		}
	}
	return a;
}