We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent 1e5f130 commit 4c50285Copy full SHA for 4c50285
1175-prime-arrangements.js
@@ -0,0 +1,22 @@
1
+/**
2
+ * @param {number} n
3
+ * @return {number}
4
+ */
5
+function isPrime(n) {
6
+ // Corner case
7
+ if (n <= 1) return false
8
+ // Check from 2 to n-1
9
+ for (let i = 2; i < n; i++) if (n % i == 0) return false
10
+ return true
11
+}
12
+
13
+const numPrimeArrangements = function(n) {
14
+ let primes = 0 // # of primes.
15
+ let result = 1
16
+ const mod = 10 ** 9 + 7
17
+ for (let i = 2; i <= n; i++) if (isPrime(i)) primes++
18
+ // Calculate factorials and multiply.
19
+ for (let i = primes; i >= 1; i--) result = (i * result) % mod
20
+ for (let i = n - primes; i >= 1; i--) result = (i * result) % mod
21
+ return result // result of multiplying factorial(primes) with factorial(non-primes)
22
0 commit comments