Skip to content

Commit 0b817f6

Browse files
authored
Create prime-arrangements.py
1 parent a4cc679 commit 0b817f6

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Python/prime-arrangements.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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+
continue
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

Comments
 (0)