Python study

5일차

for문 심화


윤년 구하는 프로그램, 완전수, 소수 판단 프로그램

윤년 프로그램

윤년은 해당 연도를 4로 나눴을때 나누어 떨어지면 윤년입니다.
하지만 4로 나누어 떨어지고 100으로 나누어 떨어지면 평년입니다.
100으로도 나누어 떨어지지만 400으로도 나누어 떨어지면 윤년입니다.
이외의 나머지 연도는 모두 평년입니다.

  1. 연도를 입력 받고 윤년인지 아닌지 출력하시오
year = int(input("연도 입력 : "))

if year % 400 == 0:
    print(year, ": 윤년입니다.")
elif year % 100 == 0:
    print(year, ": 평년입니다.")
elif year % 4 == 0:
    print(year, ": 윤년입니다.")
else :
    print(year, ": 평년입니다.")
  • if, elif, else 문을 실행할 때 앞의 조건이 성립되면 나머지 구문은 실행하지 않는 다는 사실을 잘 생각해야한다.
  • 예를 들어, if year % 4 == 0: 이 구문이 먼저 작성됐다면 4로 나누어 떨어지면서 100으로도 나누어 떨어지는 평년 역시 윤년으로 출력될 것이다.
  1. 입력한 연도까지 윤년을 골라 출력하시오.
year = int(input("연도 입력 : "))
li = []

for i in range(1, year+1):
    if i % 400 == 0:
        li.append(i)
    elif i % 100 == 0:
        pass
    elif i % 4 == 0:
        li.append(i)
    else:
        pass

print("윤년 :", li)
  • list.append()를 활용하여 최종 윤년을 보기 쉽게 리스트로 출력하였다.

완전수

완전수는 자기 자신을 제외한 양의 약수를 더했을 때 자기 자신이 되는 정수를 말합니다.
최초 다섯 개의 완전수는 6, 28, 496, 8128, 33550336

  1. 수를 입력받고 완전수인지 판단하는 프로그램
N = int(input("수 입력 : "))
li = []

for i in range(1, N):
    if N % i == 0:
        li.append(i)
if sum(li) == N:
    print(N,": 완전수")
  • for i in range(1, N):, N+1이 아니라 N까지 해주는 이유는 완전수를 계산할 때 자기자신은 제외하기 때문이다.
  1. 1부터 N까지 완전수를 출력하는 프로그램
N = int(input("수 입력 : "))

for i in range(1, N+1):
    li = []
    for j in range(1, i):
        if i % j == 0:
            li.append(j)
    if sum(li) == i:
        print(i, ": 완전수")

소수

소수는 약수의 개수가 2개 즉, 1과 자기자신만을 약수로 가지고 있는 수를 말합니다.

  1. N을 입력받고 N이 소수인지 판별하는 프로그램
N = int(input("수 입력 : "))
count = 0

for i in range(1, N+1):
    if N % i == 0:
        count += 1

if count == 2:
    print(N,"은 소수입니다.")
  1. 3 ~ N 까지 소수를 출력하는 프로그램
N = int(input("수 입력 : "))

for i in range(1, N+1):
    li = []
    for j in range(1, i+1):
        if i % j == 0:
            li.append(j)
    if len(li)==2:
        print(i, ": 소수")
  • len(li)를 통해 리스트의 길이 즉, 리스트 요소의 개수가 2인 수를 찾아서 출력한다.
profile
내 꿈은 멋쟁이개발자

0개의 댓글