def solution(n):
answer = 0
for i in range(n+1):
for j in range(2,i):
if(i%j==0):
answer+=1
break
return answer
💡 HINT : 프로그래머스 연관 문제 : “순서쌍의 개수”
반성 (Miss)
예전에 잘 못풀었던 소수라서 문제에 쫄았다
→ 소수라고 쫄지말고 차근차근 하나씩! 이제 할수 있다!
0과 1은 합성수도, 소수도 아니다!
range(1, n+1) 또는 합성수가 시작되는 range(4, n+1)로 범위를 좁히는 것이 더 정확가독성 개선 : 함수 분리
def is_composite(num):
# 1과 자신을 제외한 약수가 하나라도 있으면 합성수
for i in range(2, int(num**0.5) + 1): # 제곱근까지만 검사해도 충분!
if num % i == 0:
return True
return False
def solution(n):
# 4부터 n까지 숫자 중 합성수의 개수를 세기
return sum(1 for i in range(4, n + 1) if is_composite(i))
한 줄 팁 (Tip):