파이썬 : 출력에서 정수가 2, 3일 때 소수 함수 값이 None으로 뜨는 문제
조회수 530회
2이상의 정수를 입력 받아 2부터 n까지 정수들의 약수의 개수와 소수를 출력하는 프로그램을 만들어야 하는데, 출력부분에서 막혀요..
def readNumber():
while True:
n = int(input("정수를 입력하세요: "))
if (n >= 2):
break
else:
print("2 이상의 숫자를 입력하세요.")
continue
return n
def getCountsOfDivisors(n):
count = 0
for i in range(1, n+1):
if n % i == 0:
count += 1
return count
def isPrime(n):
for f in range(2, n-1):
if n % f == 0:
return False
else:
return True
num = readNumber()
for t in range (2, num + 1):
print("정수: " + str(t) + " 약수 개수: " + str(getCountsOfDivisors(t)) + " 소수: " + str(isPrime(t)))
이렇게 코드를 짰는데 출력에서 정수가 2, 3일 때 소수 함수 값이 None으로 뜨는데,
뭐가 문제인지 알 수 있을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
range(2, n-1)에서, n이 2 또는 3일 경우 n-1은 0보다 낮은 수가 됩니다.(range가 2부터 시작하기 때문에)
for문을 작동시키기 위해서는 n-1이 2보다는 큰, 최소한 3은 되어야 작동을 할텐데, 그렇지 않네요.
댓글 입력