2023. 1. 24. 11:30ㆍ파이썬
소수란
약수로 1과 자기 자신을 가진 1보다 큰 양의 정수입니다.
우선,소수를 판별하는 코드를 구현해보겠습니다.
number = int(input("2 이상의 양의 정수를 입력해주세요.:"))
for i in range(2, number+1):
if number % i == 0:
print(f"{number}, 소수입니다.")
break
else:
print(f"{number}, 소수가 아닙니다.")
2 이상의 양의 정수를 입력해주세요.:5
5, 소수가 아닙니다.
5, 소수가 아닙니다.
5, 소수가 아닙니다.
5, 소수입니다.
5를 입력했을 때
출력되길 원한 건 바로 5, 소수입니다.
하고 판별값이 바로 나와주는 것이었는데, i에 2부터 4까지 돌리고 5 됐을 때 소수입니다. 하고 나오네요.
뭘 잘못했지.. 하고 보니까
for i in range(2, number+1):
의도가 number 자기자신까지 범위에 포함하려고 한 거였는데
의도 자체가 틀려먹었던 겁니다..
i의 범위가 number-1까지 여야
본인 외의 나누어떨어지는 수가 있는지 없는지 판별 가능합니다.
for i in range(2, number):
일단 이렇게 고쳐줍니다.
그러면 저 범위내에서
if number % i == 0:
이 조건이 성립하면 number 외에 다른 수를 약수로 가지는 게 되니까
소수가 아닌 수가 되겠군요.
for i in range(2, number):
if number % i == 0:
print(f"{number}, 소수가 아닙니다.")
이렇게 고쳐줍니다.
보니까 else의 들여쓰기도 잘못됐습니다.
반복문을 돌렸을 때 소수가 아니면 '소수가 아닙니다.'를 출력하게 하고,
소수이면 반복문을 나와서 '소수입니다.'를 출력해주려면
최종:)
number = int(input("2 이상의 양의 정수를 입력해주세요.:"))
for i in range(2, number):
if number % i == 0:
print(f"{number}, 소수가 아닙니다.")
break
else:
print(f"{number}, 소수입니다.")
이렇게 들여쓰기 해줘야됩니다.
5를 입력해서 출력해보면
2 이상의 양의 정수를 입력해주세요.:5
5, 소수입니다.
의도한대로 출력됩니다.
소수를 판별하는 코드를 작성해보았으니,
양의 정수 두개를 입력받아 그 사이에 있는 소수를 출력해보는 코드를 작성해봅시다.
num1 = int(input("첫 번째 양의 정수를 입력해주세요.: "))
num2 = int(input("두 번째 양의 정수를 입력해주세요.: "))
for prime_num in range(num1, num2+1):
is_prime_num = True
for i in range(2, prime_num):
if prime_num % i == 0:
is_prime_num = False
break
else:
print(prime_num, end=' ')
첫 번째 양의 정수를 입력해주세요.: 3
두 번째 양의 정수를 입력해주세요.: 55
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53
첫 번째 수가 두 번째 수보다 크게 입력되면 출력이 안된다.
r prime_num in range(num1, num2+1, -1):
is_prime_num = True
첫 번째 양의 정수를 입력해주세요.: 50
두 번째 양의 정수를 입력해주세요.: 30
47 43 41 37
뭐 이렇게 하면 출력이야 되겠지만,
그럼 또 두번째 수가 첫번째 수보다 큰 게 표현이 안된다.
게다가 역으로 출력하는 것을 원하는 상황은 아니니까..
if num1 > num2:
num1, num2 = num2, num1
이 조건을 붙이면 된다.
최종:)
num1 = int(input("첫 번째 양의 정수를 입력해주세요.: "))
num2 = int(input("두 번째 양의 정수를 입력해주세요.: "))
if num1 > num2:
num1, num2 = num2, num1
for prime_num in range(num1, num2+1):
is_prime_num = True
for i in range(2, prime_num):
if prime_num % i == 0:
is_prime_num = False
break
else:
print(prime_num, end=' ')
첫 번째 양의 정수를 입력해주세요.: 10
두 번째 양의 정수를 입력해주세요.: 50
11 13 17 19 23 29 31 37 41 43 47
첫 번째 양의 정수를 입력해주세요.: 50
두 번째 양의 정수를 입력해주세요.: 10
11 13 17 19 23 29 31 37 41 43 47
'파이썬' 카테고리의 다른 글
[파이썬] if, while, for문 가위바위보 / 구구단 만들기 (0) | 2023.01.24 |
---|---|
[처음 시작하는 파이썬] ch6. 연습문제 (4) | 2023.01.21 |
[처음 시작하는 파이썬] ch5. 연습문제 (0) | 2023.01.20 |
[처음 시작하는 파이썬] ch4. 연습문제 (0) | 2023.01.19 |
[처음 시작하는 파이썬] ch4. 선택하기: if (0) | 2023.01.19 |