資料結構與演算法-------斐波那契數列、位運算、素數、最大公約數、最小公倍數
阿新 • • 發佈:2018-11-07
1、斐波那契數列
function fabeliq(n){ var arr=[]; if(n==1){ return arr=[0]; } if(n==2){ return arr=[0,1]; }else{ //初始化陣列 arr=[0,1]; //前兩個數預設為0 var prenum=0; //當前一個數預設為1 var current=1; while(n){ current += prenum; prenum=current-prenum; arr.push(current); n--; } return arr; } }
2、位運算
//正負數 true正數 false負數 function isPositive(number) { // Zero is neither a positive nor a negative number. if (number === 0) { return false; } return ((number >> 31) & 1) === 0; } //奇數偶數 true為偶數 false 為奇數 function isEven(number) { return (number & 1) === 0; }
3、素數
function sushu(number){ if(number %1 != 0){ return false; } if(number<=1){ return false; } if(number%2==0){ return false; } var delives=Math.sqrt(number); for(var dels=3;dels<=delives;dels+=2){ if(number%dels==0){ return false; } } return true; }
4、最大公約數
function euclideanAlgorithm(originalA, originalB) {
const a = Math.abs(originalA);
const b = Math.abs(originalB);
return (b === 0) ? a : euclideanAlgorithm(b, a % b);
}
5、最小公倍數
/*最小公倍數=a*b / a和b的最大公約數
*/
function gongbeishu(a,b){
return ((a==0)||(b==0))?0:Math.abs(a*b)/euclideanAlgorithm(a,b);
}