728x90
소수 : 1과 자기 자신으로만 나눠지는 수
예를 들어, 7은 1과 7로만 나누어 떨어지고 10은 2, 5로도 나누어 떨어지기 때문에 소수가 아님.
꽤나 자주 나오는 주제인데 할때마다 헷갈려서 정리하고 가자.
소수를 구할 최대 정수를 입력받고, 그 범위안에 소수가 어떤게 있는지 출력하는 알고리즘을 짤 것.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
def isPrime(n): #소수 구하는 함수
if n <= 1: #1이나 0은 False반환
return False
for k in range(2, n):
if(n%k == 0): #입력받은수를 계속 증가하는 k로 나눠서 나머지가 없다? -> 소수x
return False
return True #계속 나눈결과 나머지가 0이 아니다 -> 소수o, print문에서 출
num = input("소수를 구할 최대 정수 :") #최대 정수 입력
num = int(num)
for k in range(num+1): #만약 15를 입력받았다면 15까지의 정수중에 소수있는지 구함(0~15)
if isPrime(k): #소수 구하는 함수 호출
print(k, end=" ") #isPrime이 True를 반환하면 실행
|
cs |
15를 입력받았다고 가정하면, 1~15까지의 정수중에 소수인 수를 출력
1부터 검사해 나가서 7까지 갔다고 치자, 7은 isPrime의 파라미터로 들어간다.
그러면 7을 또 for문을 이용해서 2부터 6까지 차례로 나눠보면 된다.
계속 나누어 가다가 나머지가 0이면 False를 반환할 텐데, 7은 2,3,4,5,6으로 나누어 떨어지지 않는다.
그래서 for문을 무사히 다 돌고 True를 반환한다. 그러면 14번줄의 if문을 만족하여 7을 출력한다.
끝.
728x90
'Python > 개인 공부' 카테고리의 다른 글
Python - 함수의 파라미터 여러개 일때(*args) (0) | 2022.06.21 |
---|---|
Mac os - 터미널 명령어 정리(2022.06.20) (0) | 2022.06.20 |
Python - print문의 사용 (end, sep) (내가 헷갈려서..) (0) | 2022.06.10 |
Python - 피하기 게임(개인 프로젝트) (0) | 2022.06.08 |