Skip to content

Commit 4294c5a

Browse files
committed
Primal number square root
1 parent 0786d31 commit 4294c5a

File tree

2 files changed

+26
-9
lines changed

2 files changed

+26
-9
lines changed
Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,25 @@
1-
import isNumberPrime from "./primal-numbers";
1+
import { isNumberPrime, isNUmberPrimeMath } from "./primal-numbers";
22

3-
describe("Is 4 prime", () => {
4-
test("2nd element of fibonacci sequence", () => {
3+
describe("Is number prime", () => {
4+
test("Is 4 prime number", () => {
55
expect(isNumberPrime(4)).toBe(false);
66
});
7-
test("2nd element of fibonacci sequence", () => {
7+
test("Is 17 prime number", () => {
88
expect(isNumberPrime(17)).toBe(true);
99
});
10-
test("2nd element of fibonacci sequence", () => {
10+
test("Is 97 prime number", () => {
1111
expect(isNumberPrime(97)).toBe(true);
1212
});
1313
});
14+
15+
describe("Is number prime Math", () => {
16+
test("Is 4 prime number", () => {
17+
expect(isNumberPrimeMath(4)).toBe(false);
18+
});
19+
test("Is 17 prime number", () => {
20+
expect(isNumberPrimeMath(17)).toBe(true);
21+
});
22+
test("Is 97 prime number", () => {
23+
expect(isNumberPrimeMath(97)).toBe(true);
24+
});
25+
});

src/pirmal-numbers/primal-numbers.js

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
11
// Problem: Find if given number is a prime number or not. Return true or false
22
// Details: Prime number can be divided by 1 or itself
33

4-
// Time complexity:
5-
6-
const isNumberPrime = (num) => {
4+
// Time complexity: if input number is 1 or 2 -> O(1), if input number > 2 -> O(n), but if number is divided by 2 even though it's big e.g. 1000000000... , it's O(1) too, because it stops running immediately
5+
export const isNumberPrime = (num) => {
76
let isPrime = true;
87
for (let i = 2; i < num; i++) {
98
if (num % i === 0) isPrime = false;
109
}
1110
return isPrime;
1211
};
1312

14-
export default isNumberPrime;
13+
// Algorithm optimization with Math.sqrt()
14+
export const isNumberPrimeMath = (num) => {
15+
for (let i = 0; i < Math.sqrt(num); i++) {
16+
if (num % i === 0) return false;
17+
}
18+
return true;
19+
};

0 commit comments

Comments
 (0)