题意 给你一个,有,求最大的是多少。 题解 首先先分类讨论一下,若为偶数,那显然最大的为。那么若为质数,那么答案为,因为若,那么有,与是质数矛盾。考虑最后一种情况,为奇数。任何一个合数都可以拆成两个数的乘积的形式,即,且有一个数小于等于,那么我们从遍历到,找到第一个能整除的数即认为是,那么对应的即为最大的了。这个时候可以将拆为,这样能保证出来的最大公约数是最大的。 复杂度 时间复杂度 代码 #include<bits/stdc++.h> using namespace std; int main() { int t; scanf("%d",&t); wh...