# Data Structures

```function factorial(num){
let fact = 1;
while(num >= 1){
fact = fact*num;
num--;
}
return fact;
}

console.log(factorial(5));```
```function fibonacci(numberOfItems){
let num1 = 0, num2 = 1, fibArr=[];
fibArr.push(num1);
fibArr.push(num2);
for(let i=0; i<numberOfItems -2; i++){
let sum = num1 + num2;
fibArr.push(sum);
num1 = num2;
num2 = sum;
}
return fibArr;
}

console.log(fibonacci(8));```
```function printPrime(n){
let factors = 1, iterator = 1, primeArr = [];
while(primeArr.length < n){
for(let i=2; i<=iterator; i++){
if(iterator % i === 0)
factors++;
}
if(iterator === 1)
primeArr.push(iterator);
if(factors === 2){
primeArr.push(iterator);
}
factors = 1;
iterator++;
}
return primeArr;
}

console.log(printPrime(10));```
```function pallindromeString(str){
let start=0, end=str.length -1;
while(start <= end){
if(str[start] === str[end])
continue;
return false;
}
return true;
}

console.log(pallindromeString('samasa'));```
```function pallindromeNumber(num){
let rem, final=0, temp = num;
while(num > 0){
rem = num % 10;
num = parseInt(num/10);
final = final * 10 + rem;
}
if(final === temp)
return true;
return false;
}

```//Square Root of a number without using Math.sqrt() function

function square(num, left, right) {
let mid = (left + right) / 2,
sq = mid * mid;
if (sq === num || Math.abs(sq - num) < 0.00001) return mid;
else if (sq < num) return square(num, mid, right);
else return square(num, left, mid);
}

function findSquareRoot(num) {
let i = 1,
found = false;
while (!found) {
//If num is a perfect square, if condition will return the value
if (i * i === num) return i;
else if (i * i > num) {
let result = square(num, i - 1, i);
return result;
}
i++;
}
}

let number = 3;
console.log(findSquareRoot(number));
```
```//Perfect Square without finding square root

function perfectSquare(number) {
for (let i = 0; i * i <= number; i++) {
if (number % i === 0 && number / i === i) return true;
}
return false;
}

let num = 12;
console.log(perfectSquare(num));
```
```function divBy8(num){
let number = num.toString();
number = Number(number.substr(number.length - 3, number.length));
if(number%8 === 0)
return true;
return false;
}

console.log(divBy8(363588395960667043875487));```