We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
There was an error while loading. Please reload this page.
1 parent a4cc679 commit 0b817f6Copy full SHA for 0b817f6
Python/prime-arrangements.py
@@ -0,0 +1,35 @@
1
+# Time: O(n)
2
+# Space: O(n)
3
+
4
+class Solution(object):
5
+ def numPrimeArrangements(self, n):
6
+ """
7
+ :type n: int
8
+ :rtype: int
9
10
+ def count_primes(n):
11
+ if n <= 1:
12
+ return 0
13
+ is_prime = [True]*((n+1)//2)
14
+ cnt = len(is_prime)
15
+ for i in xrange(3, n+1, 2):
16
+ if i*i > n:
17
+ break
18
+ if not is_prime[i//2]:
19
+ continue
20
+ for j in xrange(i*i, n+1, 2*i):
21
+ if not is_prime[j//2]:
22
23
+ cnt -= 1
24
+ is_prime[j//2] = False
25
+ return cnt
26
27
+ def factorial(n):
28
+ result = 1
29
+ for i in xrange(2, n+1):
30
+ result = (result*i)%MOD
31
+ return result
32
33
+ MOD = 10**9+7
34
+ cnt = count_primes(n)
35
+ return factorial(cnt) * factorial(n-cnt) % MOD
0 commit comments