In [4]:
def cypro(k): # def 으로 cypro(k)라는 함수를 정의해준다.
cl = 1 # cl의 값을 1로 할당. (cl = 싸이클의 길이 = 1부터 시작)
while k != 1: # while(조건반복) k≠1 인지 계속 비교 (k=1이면 반복중지)
if k%2 == 0: # 만약 k를 2로 나누었을때 나머지가 0이라면 (k가 짝수라면)
k = k/2 # k는 k/2 으로 할당해준다.
else: # k가 홀수라면
k = 3*k + 1 # k를 3*k+1 으로 할당해준다.
cl += 1 # 이때 cl 변수 값은 1 증가한다.
return cl # 증가한 cl 변수 값을 반환. 다시 반복. ** 여기까지가 cypro함수 정의
In [5]:
i=int(input('INPUT MIN NUM : ')) # 문자열 'INPUT MIN NUM : '을 받아 (소수점이 없는) 정수로 만들어줌
j=int(input('INPUT MAX NUM : '))
arw=[] # arw에 빈 리스트 할당. (빈 리스트를 만든 이유: 뒤에서 arw리스트에 항목을 추가하기 위함)
for t in range(i,j+1): # i부터 j까지 의 숫자 시퀀스에서 t에 대해 반복
arw.append(cypro(t)) # arw리스트 끝에 cypro(t) 항목을 추가. 즉 비어있는 arw리스트를 cypro(t)로 채운다.
print(max(arw)) # arw의 최대값을 출력