我在C学校的项目工作时遇到了问题。 我正在使用两个设备: x = a + u i ; 的计算y = b + V 的Ĵ
已知 a,b,u,v 的值。我需要将 u,v 与自然数(i,j) 相乘,直到出现相等 x = y 。
(注意:i和j可能没有相同的值/可能是不同的数字,而x = y)。
问题来了,我不知道如何解决方程,而 i和j不同,我想可能的解决方案是循环,或者是非常规方程(我不知道如何应用它们到上面的方程式。) 我是初学者并且卡住了。有人可以帮我解决C代码问题吗?谢谢。
修改 如果我只想通过循环求解方程, 我想我知道该怎么办,但我不知道如何用C语写它。
1)循环的每一步,我算x,y
2)如果x低于y,则i增加1,否则,j增加1
3)重复直到x = y
4)有时候解决方案根本就没有,所以我必须把条件放在一边,这样就不会永远运行。
答案 0 :(得分:0)
重写你的等式,得到:
a + u i = b + v j
使用解决方案
i = (b + v j - a) / u
现在您需要找到一个自然数j
,以便i
变得自然。显然,b + v j - a
必须是u
的正数倍。所以:
b + v j - a = k * u, k \in N
j = (k * u + a - b) / v
现在k * u + a - b
必须是v
的倍数。这并不总是可行的。最简单的检查方法是迭代前几个可能的k
并查看它的位置。如果你得到一个自然数,你可以将j
的解决方案插入上面的等式中,你可以得到一个自然的i
。
这假定x,y,a,b,u和v是实数。如果它们也是整数,那么你可能会比这更进一步。