diff --git a/Project-Euler/Problem026.js b/Project-Euler/Problem026.js
new file mode 100644
index 0000000000..684f1c55a1
--- /dev/null
+++ b/Project-Euler/Problem026.js
@@ -0,0 +1,56 @@
+/**
+ * Problem - Longest Recurring Cycle
+ *
+ * @see {@link https://projecteuler.net/problem=26}
+ *
+ * Find the value of denominator < 1000 for which 1/denominator contains the longest recurring cycle in its decimal fraction part.
+ */
+
+/**
+ * Main function to find the denominator < limit with the longest recurring cycle in 1/denominator.
+ *
+ * @param {number} limit - The upper limit for the denominator (exclusive).
+ * @returns {number} The denominator that has the longest recurring cycle in its decimal fraction part.
+ */
+function findLongestRecurringCycle(limit) {
+  /**
+   * Calculates the length of the recurring cycle for 1 divided by a given denominator.
+   *
+   * @param {number} denominator - The denominator of the unit fraction (1/denominator).
+   * @returns {number} The length of the recurring cycle in the decimal part of 1/denominator.
+   */
+  function getRecurringCycleLength(denominator) {
+    const remainderPositions = new Map()
+    let numerator = 1
+    let position = 0
+
+    while (numerator !== 0) {
+      if (remainderPositions.has(numerator)) {
+        return position - remainderPositions.get(numerator)
+      }
+
+      remainderPositions.set(numerator, position)
+
+      numerator = (numerator * 10) % denominator
+      position++
+    }
+
+    return 0
+  }
+
+  let maxCycleLength = 0
+  let denominatorWithMaxCycle = 0
+
+  for (let denominator = 2; denominator < limit; denominator++) {
+    const cycleLength = getRecurringCycleLength(denominator)
+
+    if (cycleLength > maxCycleLength) {
+      maxCycleLength = cycleLength
+      denominatorWithMaxCycle = denominator
+    }
+  }
+
+  return denominatorWithMaxCycle
+}
+
+export { findLongestRecurringCycle }
diff --git a/Project-Euler/Problem027.js b/Project-Euler/Problem027.js
new file mode 100644
index 0000000000..dac47a4552
--- /dev/null
+++ b/Project-Euler/Problem027.js
@@ -0,0 +1,61 @@
+/**
+ * Problem - Quadratic Primes
+ *
+ * @see {@link https://projecteuler.net/problem=27}
+ *
+ * The quadratic expression n^2 + an + b, where |a| < 1000 and |b| ≤ 1000,
+ * produces a positive prime for consecutive values of n, starting with n = 0.
+ * Find the product of the coefficients, a and b, for the quadratic expression that
+ * produces the maximum number of primes for consecutive values of n.
+ */
+
+/**
+ * Main function to find the coefficients a and b that produce the maximum number
+ * of consecutive primes for the quadratic expression n^2 + an + b.
+ *
+ * @returns {{maxPrimes: number, product: number}} An object containing the maximum number of primes
+ * and the product of coefficients a and b.
+ */
+function findMaxConsecutivePrimes() {
+  /**
+   * Checks if a number is prime.
+   *
+   * @param {number} n - The number to check for primality.
+   * @returns {boolean} True if n is a prime number, false otherwise.
+   */
+  function isPrime(n) {
+    if (n < 2) return false // 0 and 1 are not prime numbers
+    if (n === 2) return true // 2 is a prime number
+    if (n % 2 === 0) return false // Exclude even numbers
+    for (let i = 3; i <= Math.sqrt(n); i += 2) {
+      // Check odd divisors only
+      if (n % i === 0) return false // Divisible by i, so not prime
+    }
+    return true // No divisors found, so it is prime
+  }
+
+  let maxPrimes = 0 // Store the maximum number of primes found
+  let product = 0 // Store the product of coefficients a and b
+
+  for (let a = -999; a < 1000; a++) {
+    for (let b = -1000; b <= 1000; b++) {
+      let n = 0
+      let consecutivePrimes = 0
+      while (true) {
+        const result = n * n + a * n + b // Evaluate the quadratic expression
+        if (result < 0 || !isPrime(result)) break // Stop if the result is negative or not prime
+        consecutivePrimes++
+        n++
+      }
+      if (consecutivePrimes > maxPrimes) {
+        maxPrimes = consecutivePrimes
+        product = a * b // Calculate product of coefficients a and b
+      }
+    }
+  }
+
+  return { maxPrimes, product } // Return the results
+}
+
+// Exporting the main function for use in other modules
+export { findMaxConsecutivePrimes }
diff --git a/Project-Euler/test/Problem026.test.js b/Project-Euler/test/Problem026.test.js
new file mode 100644
index 0000000000..67f60c2b48
--- /dev/null
+++ b/Project-Euler/test/Problem026.test.js
@@ -0,0 +1,16 @@
+import { findLongestRecurringCycle } from '../Problem026'
+
+/**
+ * Tests for the findLongestRecurringCycle function.
+ */
+describe('findLongestRecurringCycle', () => {
+  it.each([
+    { limit: 10, expected: 7 },
+    { limit: 1000, expected: 983 }, // The denominator with the longest cycle for limit of 1000
+    { limit: 4, expected: 3 },
+    { limit: 2, expected: 0 } // No cycle for fractions 1/1 and 1/2
+  ])('should return $expected for limit of $limit', ({ limit, expected }) => {
+    const result = findLongestRecurringCycle(limit)
+    expect(result).toBe(expected)
+  })
+})
diff --git a/Project-Euler/test/Problem027.test.js b/Project-Euler/test/Problem027.test.js
new file mode 100644
index 0000000000..f7859f03d6
--- /dev/null
+++ b/Project-Euler/test/Problem027.test.js
@@ -0,0 +1,9 @@
+import { findMaxConsecutivePrimes } from '../Problem027'
+
+describe('Problem 027 - Quadratic Primes', () => {
+  test('should return the correct product of coefficients for max consecutive primes', () => {
+    const { maxPrimes, product } = findMaxConsecutivePrimes()
+    expect(maxPrimes).toBe(71)
+    expect(product).toBe(-59231)
+  })
+})