JS常见手写算法

1,482 阅读3分钟

www.cnblogs.com/djw12333/p/…

使用JS在线编辑器运行以下代码

1.验证一个数是否是素数(素数也称质数)

素数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

如果这个数是 2 或 3,一定是素数;

如果是偶数,一定不是素数;

如果这个数不能被 3到它的平方根中的任一数整除,m必定是素数。而且除数可以每次递增2(排除偶数)

function isPrime(num){
    if(num===2 || num===3){
        return true
    }
    if(num%2===0){
        return false
    }
    let divisor = 3,limit = Math.sqrt(num);
    while(limit >= divisor){
      if (num % divisor === 0) {
          return false;
      } else {
          divisor += 2;
      }
  }
  return true;  //结束就返回true,否则在while中就返回false
}

2.斐波那契

从第3项开始,每一项都等于前两项之和

F(1)=1,F(2)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 3,n ∈ N*)

最简单的做法:递归。

function fibonacci(n){
    if (n <= 0) {
&emsp;&emsp;    return 0;
&emsp;&emsp;}
    if(n===1 || n===2){
        return 1
    }
    if(n>2){
        return fibonacci(n-1)+fibonacci(n-2)
    }
}

3.求最大公约数

质因数分解法:把每个数分别分解质因数,再把各数中的全部公有质因数提取出来连乘,所得的积就是这几个数的最大公约数。

例如:求24和60的最大公约数,先分解质因数,得24=2×2×2×3,60=2×2×3×5,24与60的全部公有的质因数是2、2、3,它们的积是2×2×3=12,所以,(24,60)=12。

把几个数先分别分解质因数,再把各数中的全部公有的质因数和独有的质因数提取出来连乘,所得的积就是这几个数的最小公倍数。

最大公因数,也称最大公约数、最大公因子,指两个或多个整数共有约数中最大的一个。

除数 在a和b的范围内,如果同时a和b除以除数的余等于0,就将此时的除数赋值给res;除数自增,不断循环上面的计算,更新res。

function getMaximumCommonDivisor(a,b){
    let res = 1,divisor = 2;
    if (a < 2 || b < 2){
        return 1;
&emsp;&emsp;}
    while(a >= divisor && b >= divisor){
        if (a % divisor === 0 && b % divisor === 0) {
&emsp;&emsp;        res = divisor;
    &emsp;&emsp;}
        divisor++;
    }
    return res;  //循环获取最大值
}
console.log(getMaximumCommonDivisor(24,60))  //12

4.数组去重

5.删除重复的字符

6.排序两个已经排好序的数组

7.字符串反向

8.字符串原位反转

9.判断是否是回文

10.判断数组中是否有两数之和

11.连字符转成驼峰

12.加油站问题-贪心算法

13.用正则实现trim() 清除字符串两端空格

14.岛问题:判断有几个岛

15.将数字12345678转化成RMB形式:12,345,678

16.删除相邻相同的字符串

17.宣讲会安排

18.汉诺塔问题

19.母牛生母牛问题