题意:给出 n,求出满足 a + b = n,且公倍数最小的一组 a, b
懒得写题解了,都在图片和代码的注释里了
#include <bits/stdc++.h>
using namespace std;
int main()
{
int T; scanf("%d", &T);
while(T--){
int n; scanf("%d", &n);
// 从最小枚举倍数k 倍数越小,a越大 n = k * a
int k=n; // 刚开始倍数为最大,a=1
// 刚开始写的是 2~n/2 TLE了,
// 想了想,k最大不能大过a,所以最大情况为k和a相等 n = k * k
for(int i=2; i<=sqrt(n); i++){
if(n%i==0) { k=i; break;} // 是倍数
}
int a=n/k, b=n-a;
cout<<a<<' '<<b<<endl;
}
return 0;
}