기초수학(1~4)

3_01. 약수와 소수

약수 : 어떤 수를 나누어떨어지게 하는 수!(나누었을 때 나머지가 0)
소수 : 1과 그 수 자신만을 약수로 가지는 수!(단, 1은 제외)

EX) 약수
2 / 1 = 2 -> 2의 약수는 1, 2 이다.
2 / 2 = 1

EX) 소수 (소수는 1과 자신만의 수 2가지만 존재함.)
2 / 1 = 2 * 4 / 1, 4 / 2, 4 / 4 (4는 소수가 아님.)
2 / 2 = 1

3_02. 약수와 소수(파이썬)

*합성수 : 소수의 반대

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

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

for number in range(1, (inputNumber + 1)):
if inputNumber % number== 0:
print('{4}의 약수 : {}'.format(inputNumber, number))

출력값 :

4의 약수 : 1
4의 약수 : 2
4의 약수 : 4

ex) 사용자가 입력한 함수의 소수를 출력해보자

inputNumber = int(input('0보다 큰 정수 입력 : 10'))
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('{} : \t\t합성수!!'.format(number))

출력값 :

0보다 큰 정수 입력 : 10
2 : 소수!!
3 : 소수!!
4 : 합성수!!
5 : 소수!!
6 : 합성수!!
7 : 소수!!
8 : 합성수!!
9 : 합성수!!
10 : 합성수!!

3_03. 소인수분해(수를 소인수의 곱으로 나타내자!)

약수(인수) 중에서 소수인 숫자를 소인수라고 한다.

20의 약수 : 1 2 4 5 10 20 (2,5)<---소인수

소인수분해 : 1보다 큰 정수를 소인수의 곱으로 나타낸 것을 소인수분해라고 한다.
ex) 20의 소인수분해 : 2 x 2 x 5(2^2x5) (소수의 값으로 곱셈)

3_04. 소인수분해 파이썬.

*리스트는 [] 대괄호를 사용한다.

3_05. 최대공약수(공통된 약수 중에서 가장 큰 수를 찾자!)

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

EX)
12의 약수 : 1 2 3 4 6 12
20의 약수 : 1 2 4 5 10 20
공약수 : 1 2 4

3_06. 최대공약수(파이썬)

ex) 사용자가 입력하여 공약수와 * num1 보다 작은 숫자
num1 = int(input('1보다 큰 정수 : 12'))
num2 = int(input('1보다 큰 정수 : 36'))
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))

출력값 :

1보다 큰 정수 : 12
1보다 큰 정수 : 36
공약수 : 1
공약수 : 2
공약수 : 3
공약수 : 4
공약수 : 6
공약수 : 12
최대공약수 : 12

3_07. 최소공배수

최소 공배수 : 공통된 배수 중에서 가장 작은 수
공배수 : 공통된 배수

ex)두 정수의 최소공배수,최대공약수를 구하고
ship1 = 3; ship2= 4; ship3 = 5;
maxDay = 0

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

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

minNum = (ship1 ship2) // maxDay 두 정수 곱을 최대공약수로 나누면 최소공배수 값나옴.
print('{}, {}의 최소공배수 : {}'.format(ship1, ship2, minNum))

newNum = minNum
for i in range(1, (newNum + 1)):
if ship3 % i == 0 and newNum % i == 0:
maxDay = i
print('최대공약수 : {}'.format(maxDay))

minNum = (ship3 * newNum) // maxDay
print('{}, {}, {}의 최소공배수 : {}'.format(ship1, ship2, ship3, minNum))
print('60일마다 모든 선박이 입항합니다.')

3_09. 진법

생활에서 사용하는 10진법 외에 다양한 진법활용

진법 : 특정 숫자 몇 개를 사용하여 수를 표시하는 방법이다.

2진법 : 0~1 (2개 사용)
8진법 : 0~7 (8개 사용)
10진법 : 0~9 (10개 사용)(제일 많이 사용하는 진법)
16진법 : 0~9, A~F ( 16개 사용)

ex) 10진수 - > O 진수
8(10진수)을 2진수로 변환 : 1000 (2로 나눈 나머지를 이어 붙이면됨.)
8(10진수)을 8진수로 변환 : 10 (8로 나눈 나머지를 이어 붙이면됨.)
17(10진수)을 16진수로 변환 : 11 (16으로 나눈 나머지를 이어 붙이면됨.)

ex) O 진수 - >10진수
2진수 ->10진수 : 2진수 1000 -> 8 (0은 의미없음)

3_10. 진법(파이썬)

10진수 ->2, 8, 16진수

2진수 함수 : bin() (binary)
8진수 함수 : oct() (octal)
16진수 함수 : hex() (hexadecimal)

ex) 10진수를 다른 진수로 변환.
dNum = 30

print('2진수 : {}'.format(bin(dNum)))
print('8진수 : {}'.format(oct(dNum)))
print('16진수 : {}'.format(hex(dNum)))

or

print('2진수 : {}'.format(format(dNum, '#b'))) *#빼면 0o, 0o, 0x 빠짐.
print('8진수 : {}'.format(format(dNum, '#o')))
print('16진수 : {}'.format(format(dNum, '#x')))

출력값 :
2진수 : 0b11110 * 0b, 0o, 0x (2,8,16진수 뜻을 가짐)
8진수 : 0o36
16진수 : 0x1e

binary : bin()
8진수 함수 : octal : oct()
16진수 함수 : hexadecimal : hex()

ex)x진수를 ->10진수

3_11. 수열

나열된 수들의 규칙을 찾자.

수열 : 규칙성을 가지고 나열되어 있는 수들

3_11. 등차수열

차이가 같은 수열.

등차수열 : 연속된 두 항의 차이가 일정한 수열

ex) 2 4 6 8 10 공차(d) : 2
: 이 등차수열의 일반항은 2n

등차중항 : 연속된 세 항에서 가운데 항
-> 가운데 항 기준 앞뒤를 더해서 2로 나누면 됨.

등차수열 일반항 공식 : an = a1 + (n-1)*d
등차수열 합 공식 : sn = n(a1 + an) / 2

3_13. 등차수열(파이썬)

ex)
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))
n += 1

print('{}번째 항의 값 : {}'.format(inputN, valueN))

등차수열 공식을 이용한
an = {2, 5, 8, 11, 14, 17, 20, 23, 26 , 29...}
공식 = an + (n-1)
d
valuenN = inputN1 + (inputN - 1) * inputD
inputN1= int(input('a1의 값 : '))
inputD= int(input('공차 : '))
inputN= int(input('n 입력 : '))

valuenN = 0

valueN = inputN1 + (inputN - 1)*inputD
print('{}번째 항의 값 : {}'.format(inputN, valueN))

profile
안녕하세요~

0개의 댓글