Модульная арифметика в VB - PullRequest
1 голос
/ 29 января 2012

У меня есть это число x, которое мне нужно найти в (40 mod x) = 1

возможный ответ для x равен 3 или 39, так как он входит в число 40 и оставляет остаток от1.

Какой код мне понадобится, если я найду все возможные ответы x?

Ответы [ 3 ]

3 голосов
/ 29 января 2012

Математически, чтобы решить (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
1 голос
/ 31 января 2012
Enumerable.Range(1, 40).Where(Function(x) 40 Mod x = 1)
0 голосов
/ 29 января 2012

Ответом на этот вопрос является набор уникальных целочисленных факторов из 39.

Вы можете найти их, выполнив цикл от 1 до Math.Sqrt(39) и проверив делимость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...