瀏覽代碼

add fibonacci prime validator

Richard Köhl 3 年之前
父節點
當前提交
1e4e94a63a
共有 2 個文件被更改,包括 29 次插入0 次删除
  1. 20 0
      src/prime.class.test.ts
  2. 9 0
      src/prime.class.ts

+ 20 - 0
src/prime.class.test.ts

@@ -643,4 +643,24 @@ Deno.test("Prime class", async (t) => {
       });
     });
   });
+
+  await t.step("static method isFibonacciPrime()", async (t) => {
+    await t.step("validate fibonacci prime numbers", () => {
+      [2, 3, 5, 13, 89, 233, 1597, 28657, 514229].forEach((number) => {
+        assert(
+          Prime.isFibonacciPrime(number),
+          `${number} is a fibonacci prime`,
+        );
+      });
+    });
+
+    await t.step("validate non-fibonacci-prime numbers", () => {
+      [1, 4, 8, 15.7, 133, 312, 313].forEach((number) => {
+        assert(
+          !Prime.isFibonacciPrime(number),
+          `${number} is NOT a fibonacci prime`,
+        );
+      });
+    });
+  });
 });

+ 9 - 0
src/prime.class.ts

@@ -1,3 +1,4 @@
+import { Fibonacci } from "./fibonacci.class.ts";
 import { OrderedNumbers } from "./ordered-numbers.class.ts";
 
 export class Prime {
@@ -209,6 +210,14 @@ export class Prime {
     return arr.length === 0;
   }
 
+  public static isFibonacciPrime(number: number): boolean {
+    if (number < 2 || !Prime.isPrime(number)) {
+      return false;
+    }
+
+    return Fibonacci.list(number).slice(-1)[0] === number;
+  }
+
   public static list(to: number): number[] {
     if (to < 2) {
       return [];