基本代数公式

代数(Algebra)是数学的一门基础学科,主要研究数、数量、关系、结构与代数方程(组)的通用解法及其性质的数学分支。 代数的研究对象不仅是数字,而是各种抽象化的结构。

代数方程是由变量、常数、因子和变量系数组合而成的表达式。

入门的数学代数包括四个方面:整数、小数、分数、百分数。


📐 数学公式

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
基础概念
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
▶ 虚数:平方是负数或根号是负数的数(实数以外的复数),,比如 √-1
▶ 实数:有理数和无理数的统称。数学上,实数定义为与数轴上点相对应的数(有限小数和无限小数)
▶ 复数:实数和虚数共同构成复数
▶ 有理数:整数(正整数,0,负整数)和分数的统称
▶ 无理数:无限不循环小数(不能用分数表示),比如 √52π,lg2, sin1°
▶ 自然数:用以计量事物件数或次序的数,即用数码 0,1,2,3,4,... 表示,也称非负整数
▶ 常数:规定的数量与数字(确定的数,不会变)



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
代数公式
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
a² – b² = (a – b)(a + b)
(a + b)² =+ 2ab + b²
a²+= (a + b)² – 2ab
(a – b)² = a² – 2ab + 
(a + b + c)² =+++ 2ab + 2bc + 2ca  
(a – b – c)² =++ c² – 2ab + 2bc – 2ca  
(a + b)³ =+ 3a²b + 3ab² + 
(a – b)³ = a³ – 3a²b + 3ab² – b³
a³ – b³ = (a – b)(+ ab +)+= (a + b)(a² – ab +)
(a + b)= a⁴ + 4a³b + 6a²b² + 4ab³ + b⁴
(a – b)= a⁴ – 4a³b + 6a²b² – 4ab³ + b⁴
a⁴– b⁴ = (a – b)(a + b)(+)


^代表次方:

(a^m)(a^n) = a^(m + n)
(ab)^m = a^m • b^m
(a^m)^n = a^(mn)


■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
分数公式
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
(a + b ÷ c) = [(ac ÷ c) + (b ÷ c)] = (ac + b) ÷ c
(a ÷ b + d ÷ b) = (a + d) ÷ b
(a ÷ b + c ÷ d) = (ad + bc) ÷ (bd)
(a ÷ b) × (c ÷ d) = (ac) ÷ (bd)
(a ÷ b) ÷ (c ÷ d) = (a ÷ b) × (d ÷ c) = (ad) ÷ (bc)

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
百分比
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
是以 100 的分数表示的数值或比率。它通常用符号 % 表示。

■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
整除
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
a ÷ b, a 称为被除数,b 是除数。若余数为 0 , 则 a 能被 b 整除(或者 b 能整除 a),记作 b|a
b 叫做 a 的约数(或因数),a 叫做 b 的倍数。则 a = qb 且 b ≤ |a|



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
最大公约数
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
最大公因数(highest common factor,hcf), 也称最大公约数(greatest common divisor,gcd)是数学词汇,指能够整除多个整数的最大正整数。而多个整数不能都为零。
记作 d = GCD(a, b)

▶ 例如求2460的最大公约数:

分解质因数法:
24 = 2 × 2 × 2 × 3
60 = 2 × 2 × 3 × 5

找出这两个数的公有质因数为2232460的最大公约数就是这几个公有质因数的乘积,即 2 × 2 × 3 = 12, 12是最大公约数
24 ÷ 12 = 2
60 ÷ 12 = 5



■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
最小公倍数
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
最小公倍数(least common multiple,lcm)是数论中的一个概念。若有一个数 X,可以被另外两个数 AB 整除,且 X 大于(或等于)AB,则 XAB 的公倍数。AB 的公倍数有无限个,而所有正的公倍数中,最小的公倍数就叫做最小公倍数。记作 c = LCM(a, b)

两个整数公有的倍数称为它们的公倍数,其中最小的一个正整数称为它们两个的最小公倍数,而最小公倍数在一般我们实际算的时候,通常是先做质因数分解,然后再依数字质因数分解后的式子,找出最小公倍数。


▶ 例如,求[121820] 的最小公倍数。因为 12 = 2² × 318 = 2 × 3²,20 = 2² × 5,其中三个数的公有的质因数为2,两个数的公有质因数为23,每个数独有的质因数为53,
其中 2 对应的最高次乘幂为 23 对应的最高次乘幂为 25 对应的最高次乘幂为 1。将这些次幂乘起来,就可以得到最小公倍数:
所以,[121820] = 2² × 3² × 5 = 180


▶ 例如,求[24, 60] 的最小公倍数(使用另一种方法,仅限2个数)。

因为最大公约数为 12所以最小公倍数等于 (24 x 60) ÷ 12 = 120

证明:
24 = 3 x 8 = 2³ x 3
60 = 6 x 10 = 2 x 3 x 2 x 5 = 2² x 3 x 5
所以,[2460] = 2³ × 3 x 5 = 120




📌 JavaScript

参考代码:index.js

/**
 * Math 对象静态属性
 */
/*
Math.E	返回算术常量 e,即自然对数的底数(约等于2.718)。
Math.LN2	返回 2 的自然对数(约等于0.693)。
Math.LN10	返回 10 的自然对数(约等于2.302)。
Math.LOG2E	返回以 2 为底的 e 的对数(约等于 1.4426950408889634)。
Math.LOG10E	返回以 10 为底的 e 的对数(约等于0.434)。
Math.PI	返回圆周率(约等于3.14159)。
Math.SQRT1_2	返回 2 的平方根的倒数(约等于 0.707)。
Math.SQRT2	返回 2 的平方根(约等于 1.414)。
*/



/**
 * Math 对象静态方法
 */
/*
Math.abs(x)	返回 x 的绝对值。
Math.acos(x)	返回 x 的反余弦值。
Math.asin(x)	返回 x 的反正弦值。 (x以弧度为单位)
Math.atan(x)	以介于 -PI/2 与 PI/2 弧度之间的数值来返回 x 的反正切值。
Math.atan2(y,x)	返回从 x 轴到点 (x,y) 的角度(介于 -PI/2 与 PI/2 弧度之间)。
Math.cos(x)	返回数的余弦。
Math.sin(x)	返回数的正弦。
Math.sqrt(x)	返回数的平方根。 (square: 正方形,平方 square root: 二次根,平方根)
Math.tan(x)	返回角的正切。
Math.exp(x)	返回 Ex 的指数。
Math.log(x)	返回数的自然对数(底为e)。
Math.max(x,y,z,...,n)	返回 x,y,z,...,n 中的最高值。
Math.min(x,y,z,...,n)	返回 x,y,z,...,n中的最低值。
Math.pow(x,y)	返回 x 的 y 次幂。(x**n  相当于 Math.pow(x,n)  即x的n次方)
Math.random()	返回 0 ~ 1 之间的随机数。
------
Math.ceil(x)	对数进行上舍入。  =>    Math.ceil(2.15) = 3
Math.floor(x)	对 x 进行下舍入。  =>    Math.floor(2.68) = 2
Math.round(x)	四舍五入。   =>   Math.round(2.68) = 3
Math.trunc(x) 方法会将数字的小数部分去掉,只保留整数部分。(对于数字而言,等同于parseInt()方法)
------
Math.hypot() 函数返回所有参数的平方和的平方根.

*/



/**
 * 例子
 */
console.log(Math.LN2);
/* 输出: 0.6931471805599453 */

console.log(Math.PI);
/* 输出:3.141592653589793  */

console.log(Math.sqrt(4));
/* 输出: 2 */

console.log(Math.sqrt(1));
/* 输出:1  */

console.log(Math.sqrt(5));
/* 输出:2.23606797749979  */

console.log(Math.sin(targetAngle1));
/* 输出:0.49999999999999994,  在数学中 sin30° 的值为 1/2  */

console.log(Math.sin(targetAngle2));
/* 输出:1,  在数学中 sin90° 的值为 1  */

console.log(Math.sin(30));
/* 输出: -0.9880316240928618  【由此验证Math.sin()内的参数并不是角度值】 */

console.log(Math.hypot(3, 4));
/* 输出:5, 运算:√(3² + 4²)  */

console.log(Math.hypot(3, 4, 5));
/* 输出:7.0710678118654755  */

console.log(Math.hypot(-5));
/* 输出:5  */

const radians = Math.atan2(15, 15);
/* 输出:0.7853981633974483  */

const degrees = radians / Math.PI * 180;
/* 45度的角  */


const deg360 = Math.PI * 2;
const targetAngle1 = deg360 / 12;
/* 30度的角  */

const targetAngle2 = deg360 / 4;
/* 90度的角  */


/**
 * 查找两个数的最大公约数
 * @param {Array} arr - 输入一个数组(包含两个数)
 * @returns {Number} 返回最大公约数
 */
function gcd(arr) {
    let low = Math.min(...arr);
    let high = Math.max(...arr);

    while (high % low !== 0) {
        /* 将余数和low替换成目前的 low 和 high */
        [high, low] = [low, high % low];

        /* 相当于:
        const tmp = high % low;
        high = low;
        low = tmp;
        */
    }
    return low;
}


/**
 * 查找两个数的最小公倍数
 * @param {Array} arr - 输入一个数组(包含两个数)
 * @returns {Number} 返回最小公倍数
 */
function lcm(arr) {
    let low = Math.min(...arr);
    let high = Math.max(...arr);
    return (low * high) / gcd(arr);
}



/**
 * 查找两个数的最小公倍数(第二种方法)
 * @param {Array} arr - 输入一个数组(包含两个数)
 * @returns {Number} 返回最小公倍数
 */
function lcm2(arr) {
    arr = arr.sort((a, b) => b - a);
    let [high, low] = arr;
    let res;

    /* a 和 b 交换位置也不会影响结果 */
    const a = arr[0], b = arr[1];

    /* 创建的数组用于存储最大数的所有倍数,以便稍后检查其他 LCM, 基于 a */
    const tempArr = Array.from({length: high}).fill(0).map( (item, i) => (i+1) * a);

    /* 判断是否整除, 基于 b */
    for (let i = 0; i < tempArr.length; i++) {
        if (tempArr[i] % b === 0) {
            res = tempArr[i];
            break;
        }
    }

    return res;

}


export { gcd, lcm, lcm2 };

测试:test.js

import { gcd, lcm } from './index';

/* 最大公约数 */
/* ---------- */
console.log(gcd([5, 1]));
/* 输出: 1 */

console.log(gcd([12, 18]));
/* 输出: 6 */

console.log(gcd([24, 60]));
/* 输出: 12 */

console.log(gcd([18, 20]));
/* 输出: 2 */



/* 最小公倍数 */
/* ---------- */
console.log(lcm([5, 1]));
/* 输出: 5 */
/* 5 的倍数:[5,10,15,20,25] */

console.log(lcm([12, 18]));
/* 输出: 36 */
/* 18 的倍数: [18,36,54,72,90,108,126,144,162,180,198,216,234,252,270,288,306,324] */

console.log(lcm([24, 60]));
/* 输出: 120 */

console.log(lcm([18, 20]));
/* 输出: 180 */