본문 바로가기
Programmers

[python] 소수 찾기

by DylanMsK 2019. 8. 28.

문제 출처

소수 찾기

 

풀이


import itertools

def solution(numbers):
    answer = 0
    numbers = sorted([int(i) for i in numbers], reverse=True)
    max_num = int(''.join([str(i) for i in numbers]))
    primes = [0, 0] + [1] * (max_num-1)
    for i in range(2, max(int(max_num**0.5), 2)):
        if primes[i]:
            for j in range(i+i, max_num+1, i):
                primes[j] = 0

    for i in range(1, len(str(max_num))+1):
        for comb in itertools.permutations(str(max_num), i):
            if comb[0] == '0':
                continue
            if primes[int(''.join(comb))]:
                primes[int(''.join(comb))] = 0
                answer += 1
    return answer
    

'Programmers' 카테고리의 다른 글

[python] 숫자 야구  (0) 2019.08.30
[python] 카펫  (0) 2019.08.30
[python] 모의고사  (0) 2019.08.27
[python] 주식가격  (0) 2019.08.25
[python] 기능개발  (0) 2019.08.25