如何使用正则表达式解代数方程组中的丢番图方程
1、我们同样在Chrome浏览器中,来执行相应的JS代码,来实现使用正则表达式,来求解一些简单的丢番图方程,例如,小学奥数题中经常出现的鸡兔同笼问题。

3、在正式解方程之前,我们先来看如何使用正则表达式来解多元一次方程的正整数解。举例这个二元一次方程:15x+2y=40首先,我们在Chrome浏览器中,打开Console控制台方法是,在任何网页,按下快捷键F12(或者右击“审查元素”)

5、我们正式输入JS代码(其中用到了正则表达式)Array(40+1).join(1).replace(/^(.+)\1{14}(.+)\2{1}$/, '$1,$2').replace(/^[^,]+|[^,]+$/g,function(t){return t.length})然后按下回车键,迅速得到方程的正整数解注意,上述代码中加粗部分,分别为:40:即方程等号右边的数字14:第一个未知数的系数减去11:第二个未知数的系数减去1

7、当然最后的替换,我们还可以这样来写,.replace(/.+/g,function(t){var s=t.split(',');return 'x='+s[0].length+','+'y='+s[1].length})// 得到x=2,y=5更加直观的求解结果。

9、那么如何解决这个困难,尤其在有多个方程(二维甚至更多维)的情况下呢?我们可以尝试使用for循环,来遍历未知数所在的正整数范围,进行求解。for(var x=1;x<35;x++){ var reg=new RegExp('^('+Array(x+1).join(1)+')\\1{1}('+Array(35-x+1).join(1)+')\\2{3}$'); var t=Array(94+1).join(1).replace(reg, '$1,$2').replace(/^[^,]+|[^,]+$/g,function(t){return t.length}); if(/,/.test(t)){ console.log(x+','+(35-x)); break;}}即可得到正确解;23,12
