on my way
[프로그래머스 코딩테스트 연습 > 정렬] 소수 찾기 (Python3) Lv1 본문
반응형
이 문제의 목표는 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 구하는 것이다.
소수는 1과 자기 자신으로만 나누어지는 수를 의미한다.
코드
import math
def isPrime(n):
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
def solution(n):
return sum([isPrime(n) for n in range(2, n + 1)])
문제 해설
isPrime(n)
함수: 주어진 숫자n
이 소수인지 판별하는 함수이다.- 입력: 정수
n
- 출력:
True
또는False
- 작동 원리:
- 입력된 숫자
n
의 제곱근까지의 수를 검사한다. - 제곱근까지만 검사하는 이유는, 소수가 아닌 수는 작은 소인수를 갖기 때문이다. 예를 들어, 16은 4*4로 나누어지므로, 제곱근인 4까지만 검사하면 된다.
n
이 2부터int(math.sqrt(n)) + 1
까지의 어떤 수로도 나누어 떨어지지 않으면 소수로 간주한다.- 하나라도 나누어 떨어지는 수가 있다면 소수가 아니므로
False
를 반환하고, 그렇지 않으면True
를 반환한다.
- 입력된 숫자
- 입력: 정수
solution(n)
함수: 주어진 숫자n
까지의 모든 소수를 찾아 그 개수를 반환하는 함수이다.- 입력: 정수
n
- 출력: 1부터
n
까지의 소수 개수 - 작동 원리:
2
부터n
까지의 모든 수에 대해isPrime()
함수를 호출하여 소수인지 확인한다.isPrime()
함수가True
를 반환하면, 그 숫자는 소수이다.- 리스트 내포를 사용하여 소수 개수를 세고,
sum()
함수를 사용하여 최종 결과를 반환한다.
- 입력: 정수
반응형
'algorithm > Python' 카테고리의 다른 글
[프로그래머스 코딩테스트 연습] 로또의 최고 순위와 최저 순위 (Python3) Lv1 (0) | 2024.08.22 |
---|---|
[프로그래머스 코딩테스트 연습] 땅따먹기 (Python3) Lv2 (0) | 2024.08.07 |
[프로그래머스 코딩테스트 연습] 기사단원의 무기 (Python3) Lv1 (0) | 2024.08.04 |
[프로그래머스 코딩테스트 연습] 예산 (Python3) Lv1 (0) | 2024.08.02 |
[프로그래머스 코딩테스트 연습 > 정렬] 가장 큰 수 (Python3) Lv2 (0) | 2024.06.20 |