[제로베이스] 데이터사이언스 1기_ 파이썬 기초 03-01.기초수학

Dasol·2021년 10월 12일
0

01_약수

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

02_소수

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

실습

  • 1과 30까지 숫자 중 5로 나눈 몫과 나머지가 모두 소수인 숫자들을 찾아보자
  • 1부터 30까지의 숫자 중 소수를 찾아보자.

파이썬을 이용해서 약수와 소수를 찾아보자

  • 파이썬을 이용해서 사용자가 입력한 숫자의 약수를 출력해보자.
inputNumber = int(input('0보다 큰 정수 입력: '))

for number in range(1, inputNumber + 1):
    if inputNumber % number == 0:
        print('{}의 약수: {}'.format(inputNumber, number))
  • 파이썬을 이용해서 사용자가 입력한 숫자의 소수를 출력해보자.
inputNumber = int(input('0보다 큰 정수 입력: '))
for number in range(2, inputNumber + 1):
    flag = True
    for n in range(2, number):
        if number % n == 0:
            flag = False
            break
        if flag:
            print(' {} : 소수!!'.format(number))
        else:
            print(' {} : 합성수!!'.format(number))

03_소인수

  • 약수(인수) 중에서 소수인 숫자를 소인수라고 한다.
    20의 약수(인수)
    -> 1, 2, 4, 5, 10, 20
    -> 2, 5 = 소수 -> 소인수

12의 소인수?
(1, 2, 3, 4, 6, 12) -> (2,3)
36의 소인수?
(1, 2, 3, 4, 9, 12, 18, 36) -> (2,3)
25의 소인수?
(1, 5, 20) -> (5)
41의 소인수?
(1, 41) -> (41)

03_소인수분해

  • 1보다 큰 정수를 소인수의 곱으로 나타낸 것을 소인수분해라고 한다.
    20의 소인수분해
    -> 2 10 (#소수의 곱)
    -> 2
    2 5
    -> 2^2
    5

소인수분해와 약수

  • 소인수분해를 이용해서 약수를 정확하고 쉽게 구한다.
    1, 2, 4, 5, 10, 20

소인수분해(파이썬)

  • 수를 소인수의 곱으로 나타내자
inputNumber = int(input('1보다 큰 정수 입력: '))
#연산을 해야하기 때문에 int에 담고 inputNumber 변수에 담는다.

n = 2
while n <= inputNumber:
    if inputNumber % n == 0:
        print('소인수: {}'.format(n))
        inputNumber /= n

    else:
        n += 1
inputNumber = int(input('1보다 큰 정수 입력: '))

n = 2
searchNumbers = [] #list, 여러 데이터 저장
while n <= inputNumber:
    if inputNumber % n == 0:
        print('소인수: {}'.format(n))
        if searchNumbers.count(n)
            searchNumbers.append(n)
        elif searchNumbers.count(n) == 1:
        inputNumber /= n

    else:
        n += 1

print('searchNumbers: {}'.format(searchNumbers))

05_최대공약수

공약수

  • 두 개 이상의 수에서 공통된 약수를 공약수라고 한다.

  • 12의 약수 -> 1, 2, 3, 4, 6, 12

  • 20의 약수 -> 1, 2, 4, 5, 10, 20

  • 공약수 -> 1, 2, 4

  • 최대공약수(공통된 값 중에 가장 큰 값) -> 4

    소인수분해를 이용하면 최대공약수 및 공약수를 구할 수 있다.
    좀 더 편리하게 최대공약수를 구하는 방법. 소수로 나눗셈하자.

    06_최대공약수 (파이썬)

  • 두 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성하자
    num1 = int(input('1보다 큰 정수 입력: '))
    num2 = int(input('1보다 큰 정수 입력: '))

for i in range(1, (num1 + 1)):
if num1 % i == 0 and num2 % i == 0
print('공약수: {}'. format(i))
maxNum = i

print('최대공약수: {}'.format(maxNum))


**유클리드 호제법**
- 유클리드 호제법을 이용해서 최대공약수를 구할 수 있다.
- 나머지가 0일 때까지 나눗셈한다.

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

temp1 = num1
temp2 = num2

while temp2 > 0:
temp = temp2
temp2 = temp1 % temp2
temp1 = temp

print('{}, {}의 최대공약수: {}'.format(num1, num2, temp1))


#### 07_최소공배수

공배수
- 두 개 이상의 수에서 공통된 배수를 공배수라고 한다.

3의 배수: 3, 6, 12, 15, 18. 21, 24, 27, 30
5의 배수: 5, 10, 15, 20, 25, 30

공배수: 15, 30 --
최소공배수: 15

소인수분해를 이용하면 최소공배수를 구할 수 있다. 
좀 더 편리하게 최소공배수 구하는 방법! 소수로 나눗셈 하자!

#### 08_최소공배수(파이썬)
- 두 개의 수를 입력하면 최소공배수를 출력하는 코드를 작성하자.

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

for i in range(1, (num1 + 1)):
if num1 % i == 0 and num2 % i == 0:
print('공약수: {}'. format(i))
maxNum = i

print('최대공약수: {}'.format(maxNum))

minNum = (num1 * num2) // maxNum
print('최소공배수: {}'.format(maxNum))


#### 09_진법
생활에서 사용하는 10진법 외에 프로그램에서 사용하는 다양한 진법에 대해서 살펴보자!
진법이란 특정 숫자 몇 개를 사용하여 수를 표시하는 방법이다.

- 2진법 : 0, 1
- 8진법: 0, 1, 2, 3, 4, 5, 6, 7
- 10진법: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9


#### 09_진법(파이썬)
파이썬을 이용한 진법 변환!
10진수 -> 2진수, 8진수, 16진수
binary:bin() 
print('2진수: {}'.format(bin(dNum))))

octal:oct()
print('8진수: {}'.format(oct(dNum))))


X진수 -> 10진수
print('2진수(0b11110) -> 10진수({})'.format(int('0b11110', 2)))


#### 010_수열
수열이란? 
- 규칙성을 가지고 나열되어 있는 수들
- 일반항 *n의 정의역 자연수

항들의 합과 항의 관계
- 특정항은 특정한까지의 합에서 특정항 이전의 항까지의 합과 같다.

#### 011_등차수열
등차 수열 규칙성을 이용해서 일반항을 구할 수 있다.

등차 중항
- 연속된 세 항에서 가운데 항

등차 수열의 합
- 규칙성을 이용해서 모든 항들의 총합을 구할 수 있다.

#### 012_등차수열(파이썬)
다음 수열을 보고 n번째 항의 값을 출력하는 프로그램을 만들어보자.

inputN1 = int(input('a1 입력: '))
inputD = int(input('공차 입력: '))
inputN = int(input('n 입력: '))

valueN = 0
n= 1
while n <= inputN:
if n == 1:
valueN = inputN1
print('{}번째 항의 값: {}'.format(n, valueN))
n += 1
continue

valueN += inputD
print('{}번째 항의 값: {}'.format(n, valueN))


#### 015_등비수열
- 연속된 두 항의 비가 일정한 수열

등비 수열의 합
- 규칙성을 이용해서 모든 항들의 총합을 구할 수 있다.

#### 016_등비수열(파이썬)

inputN1 = int(input('a1 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

valueN = 0
n = 1
while n <= inputN:
if n == 1:
valueN= inputN1
print('{}번째 항의 값: {}'.format(n,valueN)
n += 1
continue

valueN = valueN * inputR
n += 1

#an = a1 r^(n-1)
valueN = inputN1
(inputR && (inputN -1))


#### 018_시그마
-시그마란 수열의 합을 나타내는 기호이다.

inputN1 = int(input('ai 입력: '))
inputR = int(input('공비 입력: '))
inputN = int(input('n 입력: '))

valeuN = inputN1 + (inputN - 1) inputD
sumN - inputN * (inputN1 + valueN) / 2
pritn('{}번째 항까지의 합: {}'.format(inputN, int(sumN)))


#### 019_계차 수열
-두 항의 차로 이루어진 또 다른 수열
-계차 수열을 이용해서 수열의 일반항을 구할 수 있다. 
profile
Learning Data Science

0개의 댓글