forked from mouredev/retos-programacion-2023
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathzerchito.ts
55 lines (48 loc) · 1.6 KB
/
zerchito.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
/*
* Escribe un programa que, dado un número, compruebe y muestre si es primo, fibonacci y par.
* Ejemplos:
* - Con el número 2, nos dirá: "2 es primo, fibonacci y es par"
* - Con el número 7, nos dirá: "7 es primo, no es fibonacci y es impar"
*/
class NumberChecker {
fibonacciNumbers: number[] = [1 , 1];
checkNummber(num: number) {
const primeCheck = this.#isPrime(num);
const fibonacciCheck = this.#isFibonacci(num);
const evenCheck = this.#isEven(num);
return `${num} ${primeCheck}, ${fibonacciCheck} y ${evenCheck}`;
}
#isPrime(num: number): string{
let primeCheck = true;
for (let div = 2; num<= Math.sqrt(num); div++) {
if(num%div === 0){
primeCheck = false;
break;
}
}
return primeCheck ? 'es primo': 'no es primo';
}
#isFibonacci(num: number): string {
let lastIndex = this.fibonacciNumbers.length - 1;
let lastFibonacci = this.fibonacciNumbers[lastIndex];
let fiboCheck = false;
if (this.fibonacciNumbers.includes(num)) {
fiboCheck = true;
} else if (num > lastFibonacci) {
while (num > lastFibonacci) {
const newFibonacci = lastFibonacci + this.fibonacciNumbers[lastIndex-1];
lastFibonacci = newFibonacci;
this.fibonacciNumbers.push(newFibonacci);
lastIndex++;
fiboCheck = num === newFibonacci;
}
}
return fiboCheck ? 'es fibonacci' : 'no es fibonacci';
}
#isEven(num: number): string {
return num % 2 ? 'es par' : 'es impar';
}
}
const checker = new NumberChecker();
console.log(checker.checkNummber(2))
console.log(checker.checkNummber(7))