honey_pot
[python] 소수 만들기 본문
https://programmers.co.kr/learn/courses/30/lessons/12977
https://honeypot.tistory.com/102
소수 찾기의 아리스토텔레스의 체를 이용해서 구했다.
from itertools import combinations
def aristo(n):
sieve = [True]*(n+1)
m = int(n **0.5)
for i in range(2,m+1):
if sieve[i] == True:
for j in range(i+i,n+1,i):
sieve[j]=False
return sieve
def solution(nums):
answer = 0
ari = aristo(3000)
combi = list(combinations(nums,3))
for case in combi:
if ari[sum(case)]:
answer += 1
return answer
combinations 라이브러리를 이용해서 nums의 숫자를 3개씩 묶어서 리스트화하고
for 문을 이용해서 그 세 수의 합이 소수(ari 리스트에 포함되어있으면 소수)인지 확인한다.
from itertools import combinations
def aristo(n):
m = int(n **0.5)
if m < 2:
return False
for i in range(2,m+1):
if n % i ==0:
return False
return True
def solution(nums):
answer = 0
combi = list(combinations(nums,3))
for case in combi:
if aristo(sum(case)):
answer += 1
return answer
기본적으로 같지만 nums의 수가 1000 이하의 자연수라는 조건을 맞추기 위해 3000까지의 aristo 값을 저장한 리스트를 출력하는 경우가 아닌 case의 합계가 True와 False인지 바로 출력하는 방법
'문제 풀이' 카테고리의 다른 글
[python] 가장 큰 수 (0) | 2021.09.10 |
---|---|
[python] 124 나라의 숫자 (0) | 2021.09.10 |
[python] 체육복 (0) | 2021.09.09 |
[python] 크레인 인형뽑기 게임 (0) | 2021.09.09 |
[python] 로또의 최고 순위와 최저 순위 (0) | 2021.09.09 |
Comments