VB中的模块化算法

时间:2012-01-29 19:28:16

标签: vb.net math

我有这个数字x,我需要在(40 mod x)= 1

中找到

x的可能答案是3或39,因为它进入数字40并留下余数1。

如果我要找到x的所有可能答案,我需要什么样的代码?

3 个答案:

答案 0 :(得分:3)

在数学上,要解决(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。

当然,对于这么少的数字,找到aa-b的所有因素比单纯执行a的所有试验划分要多得多。 x,所以正确解决问题的方法就是把你提出的问题完全解释并放入代码中(原谅我的VB,过去15年我没有写过任何问题)左右......)

for x = 2 to 39
   if (40 % x) = 1
      MsgBox(x)
   end if
 next

答案 1 :(得分:1)

Enumerable.Range(1, 40).Where(Function(x) 40 Mod x = 1)

答案 2 :(得分:0)

该问题的答案是一组独特的整数因子39。

您可以通过从1循环到Math.Sqrt(39)并检查可分性来找到它们。