Математически, чтобы решить (a mod x) = b
, просто найдите все делители a-b
, которые не являются делителями a
.например, для (40 mod x) = 1
найдите делители 40 - 1 (т.е. 39), которые равны 3, 13 и 39. Делителями 40 являются 2, 4, 5, 8, 10, 20, 40. Ни одно из чиселв первом наборе во втором, так что решения 3, 13 и 19.
Для (40 mod x) = 5
вы найдете делители 40 - 5 (то есть 35), которые 5, 7,и 35. 5 находится в списке делителей 40, а два других - нет, поэтому решения - это 7 и 35.
Конечно, для таких небольших чисел больше работы найти всефакторы a
и a-b
, чем просто выполнить все пробные деления a
на x
, поэтому правильный способ решения вашей проблемы состоит в том, чтобы взять именно вопросВы спросили и поместили это в код (простите мой VB, я не писал ни одного за последние 15 лет или около того ...)
for x = 2 to 39
if (40 % x) = 1
MsgBox(x)
end if
next