230917_스터디노트

Sihyun Kim·2023년 9월 17일

01~02_약수와 소수

약수: 어떤 수를 나누어떨어지게 하는 수!
소수: 1과 그 수 자신만을 약수로 가지는 수!

  • 약수 출력하기
userNum = int(input('0보다 큰 정수 입력: '))

for i in range(1, userNum+1):
    if userNum % i == 0:
        print(f'{userNum}의 약수: {i}')
  • 소수 출력하기
userNum = int(input('0보다 큰 정수 입력: '))

for i in range(2, userNum+1):
    flag = True
    for n in range(2, i):
        if i % n == 0:
            flag = False


    if flag:
        print(f'{i} : 소수')

    else:
        print(f'{i} : 합성수')

03~04_소인수와 소인수분해

  • 소인수: 약수(인수) 중에서 소수인 숫자
  • 소인수분해: 1보다 큰 정수를 소인수의 곱으로 나타낸 것 (ex: 20 = 2^2 x 5)
  • 소인수분해를 이용해서 약수를 정확하고 쉽게 구할 수 있음
  • 소인수 분해 하기
userNum = int(input('1보다 큰 정수 입력: '))

n = 2

while userNum >= n:
    if userNum % n == 0:
        print(f'소인수: {n}')
        userNum /= n

    else:
        n += 1
  • "사용자 입력 정수"에 x를 곱하면 y의 제곱이 된다고 할 때, x에 해당하는 가장 작은 정수 구하기
userNum = int(input('1보다 큰 정수 입력: '))

n = 2
numList = []

while userNum >= n:
    if userNum % n == 0:                #소인수 찾기
        
        if numList.count(n) == 0:       #리스트에 없는 소인수는 하나 추가해주기
            numList.append(n)

        elif numList.count(n) == 1:     #리스트에 한개 있던 소인수를 또 찾으면 원래 있던 걸 지워버리기
            numList.remove(n)

        userNum /= n

    else:
        n += 1

print(numList)

05~06_최대공약수

  • 공약수: 두 개 이상의 수에서 공통된 약수
  • 최대공약수: 공약수 중 가장 큰 수
userNum1 = int(input('1보다 큰 정수 입력: '))
userNum2 = int(input('1보다 큰 정수 입력: '))

commonList = []
maxCommon = 1

if userNum1 <= userNum2:

    for i in range(1, userNum1+1):
        if userNum1 % i == 0 and userNum2 % i == 0:
            commonList.append(i)
            maxCommon = i

    print(f'{userNum1}{userNum2}의 공약수: {commonList}')
    print(f'{userNum1}{userNum2}의 최대공약수: {maxCommon}')

else:
    print(f'두번째 숫자가 첫번째 숫자보다 작습니다')    
  • 유클리드 호제법(?)에 대해 설명, 그러나 설명을 너무 ?!하게 해서 다음에 따로 찾아보고 풀어보기

07~08_최소공배수

  • 공배수: 두 개 이상의 수에서 공통된 배수
  • 최소공배수: 공배수 중 가장 작은 수
num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))

maxNum = 1
divisorList = []

for i in range(1, num1+1):
    if num1 % i == 0 and num2 % i == 0:
        divisorList.append(i)
        maxNum = i

minNum = int((num1*num2) / maxNum)

print(f'공약수: {divisorList}')
print(f'최대공약수: {maxNum}')
print(f'최소공배수: {minNum}')
ship1 = 6
ship2 = 8
ship3 = 10

maxNum = 1      #최대공약수

for i in range(1,ship1+1):
    if ship1 % i == 0 and ship2 % i == 0:
        maxNum = i

minDay = int((ship1*ship2)/maxNum)      #최소공배수

for n in range(1, minDay+1):
    if ship3 % n == 0 and minDay % n == 0:
        maxNum = n

minDay = int((ship3 * minDay) / maxNum)

print(minDay)
       
profile
문과이과예체능통합형인재

0개의 댓글