[제로베이스] [기초 수학] 자연수

한결·2023년 12월 16일
0
post-thumbnail

1. 약수

약수
어떤 수를 나누어 떨어지게 하는 수

ex) 12의 약수는 1, 2, 3, 6, 12

파이썬을 이용해서 사용자가 입력한 숫자의 약수를 출력해보자.

num = int(input('0보다 큰 정수 입력: '))

for i in range(1,num+1):
    if num % i == 0 : # 나누어 떨어지면 약수이다.
        print(f'{num}의 약수: {i}')

2. 소수

소수
1과 자신만을 약수로 가지는 수 (단, 1은 제외)

ex) 2, 3, 5, 7, 11, ...등이 소수이다

파이썬을 이용해서 사용자가 입력한 숫자까지의 소수를 출력해보자.

num = int(input('0보다 큰 정수 입력: '))
prime = True
for i in range(2,num+1):
    for j in range(2,i):
        if i % j == 0 :
            prime = False
            break
        else :
            prime = True

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

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

3. 소인수

소인수
약수 중에서 소수인 숫자
ex) 12의 약수는 1, 2, 3, 6, 12 이 중에서 소인수는 2, 3


4. 소인수분해

소인수분해
1보다 큰 정수를 소인수의 곱으로 나타낸 것
ex) 20을 소인수분해 하면 2x2x5

파이썬을 이용해서 사용자가 입력한 수를 소인수 분해하자.

num = int(input('1보다 큰 정수 입력: '))

while True:
    if num == 1 :
        break

    for i in range (2,num+1):
        if num % i == 0 :
            print(f'소인수: {i}')
            num /= i
            num = int(num)
            break

5. 최대공약수

공약수
두 개 이상의 수에서 공통된 약수
ex) 12와 18의 공약수 1, 2, 3, 6


최대공약수
공약수 중 가장 큰 수
ex) 12와 18의 최대공약수 6

두 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성하자.

num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
gcd = 1

for i in range(1,min(num1,num2)+1):
    if num1 % i ==0 and num2 % i == 0 :
        print(f'공약수: {i}')
        gcd = i
print(f'최대공약수: {gcd}')

6. 최소공배수

공배수
두 개 이상의 수에서 공통된 배수
ex) 12와 18의 공배수 36, 72, 108, ...


최소공배수
공배수 중 가장 작은 수
ex) 12와 18의 최소공배수 36

세 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자.

num1 = int(input('1보다 큰 정수 입력: '))
num2 = int(input('1보다 큰 정수 입력: '))
num3 = int(input('1보다 큰 정수 입력: '))

mult = max(num1, num2, num3)

while True:

    if mult % num1 ==0 and mult % num2 ==0 and mult % num3 ==0:
        lcm = mult
        break
    else:
        mult += 1
        continue

print(f'최소공배수: {lcm}')

7. 진법

진법
진법이란, 특정 숫자 몇 개를 사용하여 수를 표시하는 방법이다.
ex) 2진법 (0과 1만 사용), 4진법 (0,1,2,3만 사용)

10진수에서 다른 진수로 변환하는 방법

dNum = 37

print('2진수: {}'.format(bin(dNum)) # 10진수에서 2진수로 표현
print('8진수: {}'.format(oct(dNum)) # 10진수에서 8진수로 표현
print('16진수: {}'.format(hex(dNum)) # 10진수에서 16진수로 표현
2진수: 0b100101
8진수: 0o45
16진수: 0x25

표현되는 숫자들은 전부 string로 반환된다.

그러면 반대로 2진수, 8진수, 16진수를 10진수로 바꿀 때는

print(int('0b100101',2))
print(int('0o45',8))
print(int('0x25',16))
37
37
37
profile
낭만젊음사랑

0개의 댓글