闲的没事儿干写了个因式分解......原版JS分析+易源码
function Factorise(a, b, c)
{
\\ 函数Factorise,参数a,
b,
c
a = Number(a);
\\ 将变量a转换为数字类型
b = Number(b);
\\ 将变量b转换为数字类型
c = Number(c);
\\ 将变量c转换为数字类型
if (isNaN(a) || isNaN(b) || isNaN(c))
{
\\ 检测a、b、c三个变量是不是数字
return [false] \\ 如果其中一个不是,返回假
}
var factor_a = findFactor(a);
\\ 求a所有的因数并赋值给变量factor_a
var factor_c = findFactor(c);
\\ 求a所有的因数并赋值给变量factor_a
if ((b ** 2 - a * c) === 0)
{
\\ 如果b * 2 - a * c = 0的话
return [false] \\ 返回假
}
var numbers_a;
\\ 定义变量numbers_a
var numbers_c;
\\ 定义变量numbers_c
for (numbers_a of factor_a)
{
\\ 循环,逐次将factor_a的值赋给numbers_a
for (numbers_c of factor_c)
{
\\ 循环,逐次将factor_c的值赋给numbers_c
if ((numbers_a[0] * numbers_c[0] + numbers_a[1] * numbers_c[1]) === b)
{
\\ 如果左边 = 右边
return [true, [[numbers_a[0], numbers_c[1]], [numbers_a[1], numbers_c[0]]]] \\ 返回真,
和对应数组的内容
}
if ((numbers_a[1] * numbers_c[0] + numbers_a[0] * numbers_c[1]) === b)
{
\\ 如果左边 = 右边
return [true, [[numbers_a[1], numbers_c[1]], [numbers_a[0], numbers_c[0]]]] \\ 返回真,
和对应数组的内容
}
}
}
return [false] \\ 返回假
}
function findFactor(num)
{
\\ 函数,取num的所有因数
var factors = [];
\\ 定义变量factors(列表)
var i;
\\ 定义变量i
for (i = Math.abs(num); i >= -Math.abs(num); i--)
{
\\ Math.abs,
取num的绝对值,i需要大于等于num绝对值,
if ((num % i) === 0)
{
\\ 如果num除i的余数是0
var theOther = num / i;
\\ 定义变量theOther并赋值num除i的余数
factors.push([i, theOther]);
\\ 在factors中加入i和theOther的值
}
}
return factors \\ 返回factors
}