본문 바로가기

카테고리 없음

(정수론/파이썬) 삼각수와 사각수의 공통수

# 친절한 수론 길라잡이, 12쪽 연습문제 1.1
# 삼각수와 사각수의 공통 숫자 찾기
# 
# t: 삼각수 s: 사각수
# t = n*(n+1) / 2
# s = m^2

print("삼각수와 사각수의 공통 숫자")

n, m = 2, 2 # 2부터 시작. 1도 공통수이지만 계산의 편의성을 위해 일단 제외
while True:
  t = n * (n + 1) / 2
  s = m ** 2
  while s > t:
    n += 1
    t = n * (n + 1) / 2
  while t > s:
    m += 1
    s = m ** 2
  if t == s:
    print(f"{s}     ", end="")
    print(f"({n}, {m})")
    n += 1
    m += 1
   
# 출력 결과:
#
# 삼각수와 사각수의 공통 숫자
# 36     (8, 6)
# 1225     (49, 35)
# 41616     (288, 204)
# 1413721     (1681, 1189)
# 48024900     (9800, 6930)
# 1631432881     (57121, 40391)
# 55420693056     (332928, 235416)
# 1882672131025     (1940449, 1372105)
# 63955431761796     (11309768, 7997214)
# 2172602007770041     (65918161, 46611179)
# 31843510970040004     (252362877, 178447502)
# 73804512832419600     (384199200, 271669860)
# 209868964743659776     (647871846, 458114576)
# 395093788255338496     (888924955, 628564864)
# (10분 정도 실행한 결과. 더 있을 수도 있음)