프로그래머가 보는 수학 - 인수와 소인수

2022. 5. 22. 10:20카테고리 없음

728x90

사전지식 : https://aaaag.tistory.com/20

 

프로그래머가 보는 수학 - 약수와 배수

약수 : 어떤 수가 나누어 떨어지는 수 더보기 8 == 1,2,4,8의 약수 나누어 떨어진다라는 말의 의미 : 어느 숫자로 나누었을때 결과가 0이라는 의미 8을 나누었을때 결과가 0이 되는 수들을 약수라 함

aaaag.tistory.com

사전지식 : https://aaaag.tistory.com/21

 

프로그래머가 보는 수학 - 소수와 합성수

사전 지식 : https://aaaag.tistory.com/20 소수 : 약수가 1과 자기 자신만 있는 수 더보기 2 == 1, 2 3 == 1, 3 5 == 1, 5 약수의 개수가 2개라면 소수. 다른 표현으론 1과 자기자신으로만 나누어 떨어지는 수를..

aaaag.tistory.com


인수 : 어떤 수나 식을 곱하기로 표현 가능한 각각의 것


더보기
  • 8 == 1 * 8
  • 8 == 2 * 4
  • 8은 1 * 8 또는 2 * 4로 표현 가능 함으로 각각의 인수는 1, 2, 4, 8
  • 약수를 구할때 8일 경우 나누는 수들이 약수
    • 8 % 1 = 0
    • 8 % 2 = 0
    • 8 % 4 = 0
    • 8 % 8 = 0
    • [나눠지는수] % [나누는수] = [나머지]
    • 1, 2, 4, 8 == 나누는수가 약수
  • 인수는 곱하기, 약수는 나누기의 수들로 생각하면 쉬움

소인수 : 인수중 소수인 수


프로그래밍 구현

# -*- coding: utf-8 -*-
number = int(input())

resultTuple = ()
maxLoop = number + 1
for leftNumber in range(1, maxLoop):
    #TODO: (현재 인수 * 2) < 입력받은 수의 반의 의미
    #TODO: 8일 경우 1~8까지 loop를 돌때 8의 반은 1~4
    #TODO: 현재 인수가 5일 경우 반 이상의 숫자를 검사할려는 경우 임으로 의미 없음
    result = leftNumber * 2
    if result > number:
        break

    for rightNumber in range(leftNumber, maxLoop):
        result = leftNumber * rightNumber
        if result == number:
            resultTuple = resultTuple + (leftNumber, rightNumber)
            break

if len(resultTuple) == 2:
    print(f"prime factor : {resultTuple}")
else:
    print(f"factor : {resultTuple}")