public static void main(String[] args) {
int[] mod = {0, 0, 1, 2, 1, 4, 5, 4, 1, 2, 9, 0, 5, 10, 11, 14, 9, 0, 11, 18, 9, 11, 11, 15, 17, 9, 23, 20, 25, 16, 29, 27, 25, 11, 17, 4, 29, 22, 37, 23, 9, 1, 11, 11, 33, 29, 15, 5, 41, 46};
long t = lcm(2, 3);
long result = 5;//a=2,3
for (int i = 4; i <= 49; i++) {//从4开始
while (result % i != mod[i]) {
result += t;//加上前数的最小公倍数,保证之前的余数不变
}
t = lcm(t, i);
}
System.out.println(result);
}
//最大公约数
public static long gcd(long a, long b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
//最小公倍数
public static long lcm(long a, long b) {
return (a * b) / gcd(a, b);
}