【题目链接】
【题目考点】
1. 枚举
2. 因数
如果n是a的倍数,那么称a是n的因数或因子。
判断方法:n % a == 0
【解题思路】
输入n,m
- 枚举对象:a
- 枚举范围:
a与m-a作为n的因子,一定都是正整数。因此 m − a > 0 m - a > 0 m−a>0,有 a < m a < m a<m,且 a ≥ 1 a \ge 1 a≥1
因为a是n的因子,所以 a ≤ n a \le n a≤n
因此a的枚举范围为: 1 ≤ a 1 \le a 1≤a且 a < m a < m a<m且 a ≤ n a \le n a≤n - 判断条件:a与m-a都是n的因子,即
n%a == 0 && n%(m-a) == 0
如果没有找到符合条件的a,输出-1。
【题解代码】
解法1:枚举
#include <bits/stdc++.h>
using namespace std;
int main()
{
int n, m;
cin >> n >> m;
for(int a = 1; a < m && a <= n; ++a)
{
if(n % a == 0 && n % (m-a) == 0)
{
cout << a;
return 0;
}
}
cout << -1;
return 0;
}