[
math
combinatorics
]
Leetcode 1175. Prime Arrangements
Problem statement
https://leetcode.com/problems/prime-arrangements/
Solution
What we need to do is calculate number of prime numbers x
and then return x! * (n-x)!
.
Complexity
We can say it is O(n*sqrt(n))
for this solution, if we do not count the fact that factorials can be big. However it is easy to make it true O(n*sqrt(n))
. Also we can make it O(n log log n)
or even O(n)
if we use Sieve.
Code
class Solution:
def numPrimeArrangements(self, n):
def isPrime(x):
for i in range(2, int(sqrt(x)) + 1):
if x % i == 0: return False
return True
x = sum(isPrime(i) for i in range(2, n + 1))
return (factorial(x) * factorial(n - x)) % (10**9 + 7)