如何将整数分解为随机确定方程?

时间:2016-10-02 17:39:02

标签: algorithm arithmetic-expressions calculus factorization decomposition

警告:完全是Stack Overflow的新功能,所以我可以感谢任何提问,以便我帮助人们回答。

我得出结论,我需要分解,分解或实现某种类型的分支过程以获得我想要的结果。如果我错了,请纠正我,我在这里学习。

我从两个不同的StackOverflow答案中找到了它。

Decompose integers larger than 100 digits

https://softwareengineering.stackexchange.com/questions/195813/generating-random-math-expression

我正在解决一个问题,但我没有数学背景来完全理解相应的解决方案。所以不仅仅是一个答案,但任何对我能学到的技能的参考都会很棒。

我期待的是一种可以用来生成结果的算法。

所以这就是我想要发生的事情。

说我有一个整数,56。

我希望能够生成一个等于56的有限大小的随机数学表达式。 该表达式应限于4个运算符;添加,减去,乘,除。

所以我期望这个算法的结果是;

输入: 整数56,长度4

结果: 10 + 2 x 3 + 20 = 56

另一个例子

输入: 整数34,长度5

3 * 7 / 2 * 3 + 4 = 34

我应该填写一些注意事项。我想能够从我提供的整数生成这些随机表达式,我确定的长度。运营商的顺序并不重要。我不想在不知道结果的情况下生成方程,因为我需要在执行之前知道结果以提高效率。您还将在第二个示例中注意到,如果整数被视为浮点数,则等式将是不正确的。我确实希望各个操作能够对结果进行平局,或者舍入到前一个整数而不是引入小数点。我不是100%我想要四舍五入,但让我知道你对处理四舍五入的想法。

我对自己如何做到这一点有一些想法,但我真的希望第二眼看到这个问题,以便在学术层面上理解这个问题。

如果它不是很明显,我就是自学成才。谢谢你的回答!我希望能够成为这个神奇社区的一部分。

1 个答案:

答案 0 :(得分:0)

好像你忽略了运算符优先级。然后,您可以从后面简单地生成公式。

即。从你的结果开始(例如34)。然后选择任何运算符和合适的第二个操作数(例如+4)。这会导致您找到一个公式,导致30的长度比原始长度短。这样做直到你达到0的长度。

选择操作员可以随机完成。但是如果你想留在一定的范围内,你可能还想考虑可能的操作数。对于除法和减法,您可以使用任何操作数。但是如果你不希望中间结果疯狂地高,你可能想要限制它们。对于乘法,操作数仅限于结果的除数。另外,操作数显然必须小于结果。