|
1 |
| -import { CONFIG } from "../config"; |
2 |
| - |
3 | 1 | export function isPrime(n: number): boolean {
|
4 |
| - if (n <= CONFIG.MIN_NUMBER || n > Number.MAX_SAFE_INTEGER) return false; |
5 |
| - for (let i = CONFIG.MIN_DIVISOR; i <= Math.sqrt(n); i++) { |
6 |
| - if (n % i === 0) return false; |
| 2 | + const absN = Math.abs(n); |
| 3 | + if (absN <= 1) return false; |
| 4 | + for (let i = 2; i <= Math.sqrt(absN); i++) { |
| 5 | + if (absN % i === 0) return false; |
7 | 6 | }
|
8 | 7 | return true;
|
9 | 8 | }
|
10 | 9 |
|
11 | 10 | export function isPerfect(n: number): boolean {
|
12 |
| - if (n <= CONFIG.MIN_NUMBER) return false; |
13 |
| - let sum = CONFIG.MIN_NUMBER; |
14 |
| - for (let i = CONFIG.MIN_DIVISOR; i <= Math.sqrt(n); i++) { |
15 |
| - if (n % i === 0) { |
| 11 | + const absN = Math.abs(n); |
| 12 | + if (absN <= 1) return false; |
| 13 | + let sum = 1; |
| 14 | + for (let i = 2; i <= Math.sqrt(absN); i++) { |
| 15 | + if (absN % i === 0) { |
16 | 16 | sum += i;
|
17 |
| - if (i !== n / i) sum += n / i; |
| 17 | + if (i !== absN / i) sum += absN / i; |
18 | 18 | }
|
19 | 19 | }
|
20 |
| - return sum === n; |
| 20 | + return sum === absN; |
21 | 21 | }
|
22 | 22 |
|
23 | 23 | export function isArmstrong(n: number): boolean {
|
24 |
| - const digits = String(n).split(""); |
| 24 | + const absN = Math.abs(n); |
| 25 | + const digits = String(absN).split(""); |
25 | 26 | const length = digits.length;
|
26 | 27 | const sum = digits.reduce(
|
27 | 28 | (acc, digit) => acc + Math.pow(Number(digit), length),
|
28 | 29 | 0
|
29 | 30 | );
|
30 |
| - return sum === n; |
| 31 | + return sum === absN; |
31 | 32 | }
|
32 | 33 |
|
33 | 34 | export function calculateDigitSum(n: number): number {
|
34 |
| - return String(n) |
35 |
| - .split("") |
36 |
| - .reduce((acc, digit) => acc + Number(digit), 0); |
| 35 | + const sign = n < 0 ? -1 : 1; |
| 36 | + const digits = Math.abs(n).toString().split(""); |
| 37 | + const sum = digits.reduce((acc, digit) => acc + Number(digit), 0); |
| 38 | + return sign * sum; |
37 | 39 | }
|
0 commit comments