이거 permutations로 모든 경우의수 만들어놓고
하나씩 꺼내서 is_prime() 하면 되는거아님?
## set 써야할거같음 -> combination은 쓰면 안됨 => 17과 71 둘다 나오기 때문
from itertools import permutations
def is_prime_number(x):
# 소수는 1보다 큰 자연수 중 1과 자신을 약수로 갖는 수
if x == 1 or x == 0:
return False
for i in range(2, x): # 소수는 1보다 큰 자연수 중에서 이므로 2부터 계산
if x % i == 0: # 나머지가 0이된다 = 나눠지는 수가 있다면 소수 아님!
return False
return True
def solution(numbers):
answer = []
arr = list(map(int,numbers))
leng = len(numbers)
for j in range(1, leng+1):
for i in permutations(arr, j):
candidate = int("".join(map(str,i)))
if is_prime_number(candidate):
answer.append(candidate)
return len(set(answer))
print(solution("17"))
print(solution("011"))
from itertools import permutations
def solution(n):
a = set()
for i in range(len(n)):
a |= set(map(int, map("".join, permutations(list(n), i + 1))))
a -= set(range(0, 2))
for i in range(2, int(max(a) ** 0.5) + 1):
a -= set(range(i * 2, max(a) + 1, i))
return len(a)
primeSet = set()
def isPrime(number):
if number in (0, 1):
return False
for i in range(2, number):
if number % i == 0:
return False
return True
def makeCombinations(str1, str2):
if str1 != "":
if isPrime(int(str1)):
primeSet.add(int(str1))
for i in range(len(str2)):
makeCombinations(str1 + str2[i], str2[:i] + str2[i + 1:])
def solution(numbers):
makeCombinations("", numbers)
answer = len(primeSet)
return answer