可以模拟理解一下代码
主要是理解数组a的作用
#include <bits/stdc++.h>
using namespace std;
int n,m;
int pd (int i){
int t = i % n;
for(int j = 0;t <= i;t += n){
if(t % m == 0) {return 0;}
}
return 1;
}
int main(){
int a[10001];//a数组作用:确定1-n范围是否可以被达到
memset (a,0,sizeof(a));
cin >> n >> m;
int t,k;
if(n < m ) { t = m;m = n;n = t;}//n为 max,m 为 min
int i = 0,j = n;
a[0] = 1;t = 1;k = n-1;
while(i < j){ a[i] = 1; i += m ;}
for(;;i+=m){
if(i > j + n) j += n;
a[i - j] = 1;
for(; k >=1;k--){
if(!a[k]){t = j + k;break;};
}
if(k == 0)break;
}
int t1 = 1;
for(int i = t; i > 1; i--){
if(pd(i) && t1 < i){
t1 = i;
break;
}
}
cout << t1<<endl;
return 0;
}