Skip to content

簡單數學運算

這裡的函數是被 export function 直接匯出的。

Functions

FunctionDescription
isNum檢查 nn 是否為數字,與 typeof value === "number" 等價
isInt檢查 nn 是否為整數,與 Number.isInteger(value) 等價
gcd回傳兩數的最大公因數 ( Greatest Common Divisor )
lcm回傳兩數的最小公倍數 ( Least Common Multiple )
getFactors回傳 nn 的所有正因數 ( 升序排列 )
getSquareFactork2k^2nn 的最大平方因數,回傳 kk
getRandomInt回傳範圍 [min, max] 內的隨機整數
sum總和

isNum

檢查參數 value 是否為數字,與 typeof value === "number" 等價。

js
import { isNum } from "ran-math";
isNum(value: any): boolean
ParamTypeDescription
valueany要檢查的值

範例:

js
isNum(123)           // true
isNum(-456.78)       // true
isNum(NaN)           // true
isNum("123")         // false
isNum(new Number(5)) // false

isInt

檢查參數 value 是否為整數,與 Number.isInteger(value) 等價。

js
import { isInt } from "ran-math";
isInt(value: any): boolean
ParamTypeDescription
valueany要檢查的值

範例:

js
isInt(123)           // true
isInt(123.0)         // true
isInt(-456.78)       // false
isInt(NaN)           // false
isInt("123")         // false
isInt(new Number(5)) // false

gcd

回傳兩數的最大公因數 ( Greatest Common Divisor ):

gcd(a,b)\gcd(a, b)

js
import { gcd } from "ran-math";
gcd(a: number, b: number): number
ParamTypeDescription
anumber ( int )aa
bnumber ( int )bb

ab 為負數,會自動取絕對值。

範例:

js
gcd(0, 0)    // 0
gcd(0, 1)    // 1
gcd(-60, 36) // 12

lcm

回傳兩數的最小公倍數 ( Least Common Multiple ):

lcm(a,b)\text{lcm}(a, b)

js
import { lcm } from "ran-math";
lcm(a: number, b: number): number
ParamTypeDescription
anumber ( int )aa
bnumber ( int )bb

ab 為負數,會自動取絕對值。

範例:

js
lcm(0, 0)           // 0
lcm(0, 5)           // 0
lcm(-21, 6)         // 42
lcm(123456, 789012) // 8117355456

getFactors

回傳 nn 的所有正因數 ( 升序排列 )。

js
import { getFactors } from "ran-math";
getFactors(n: number): Array<number>
ParamTypeDescription
nnumber ( int )nn

n 為負數,會自動取絕對值。

範例:

js
getFactors(0)  // []
getFactors(1)  // [1]
getFactors(3)  // [1, 3]
getFactors(-6) // [1, 2, 3, 6]

getSquareFactor

k2k^2nn 的最大平方因數,回傳 kk
可以用於化簡根號: n=k2s=ks\sqrt{n} = \sqrt{k^2 s} = k \sqrt{s}

定義 1100 的最大平方因數。

js
import { getSquareFactor } from "ran-math";
getSquareFactor(n: number): number
ParamTypeDescription
nnumber ( int )nn

n 為負數,會自動取絕對值。

範例:

js
getSquareFactor(0)      // 1 (定義)
getSquareFactor(1)      // 1 -> √1 = 1√1
getSquareFactor(90)     // 3 -> √90 = 3√10
getSquareFactor(-97)    // 1 -> √-97 = 1√-97
getSquareFactor(123456) // 8 -> √123456 = 8√1929

getRandomInt

回傳範圍 [min, max] 內的隨機整數。

js
import { getRandomInt } from "ran-math";
getRandomInt(min: number, max: number): number
ParamTypeDescription
minnumber ( int )隨機整數的最小值
maxnumber ( int )隨機整數的最大值

範例:

js
getRandomInt(-5, 5) // 隨機生成 -5 到 5 的隨機整數

sum

將輸入的所有參數加總。
若參數出現巢狀 Array,會將內部所有 number 加總。

如果有元素不為 number,會報錯。

js
import { sum } from "ran-math";
sum(...arr: Array<number|Array>): number
ParamTypeDescription
...arrArray<number|Array>要求和的數列。

範例:

js
import { sum } from "ran-math";

sum()                      // 0
sum(2, -4, 7.2)            // 5.2
sum([2, -4, 7.2])          // 5.2
sum([2, 3.2], [[-4], 7.2]) // 8.4