실습
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))
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)
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))
공약수
두 개 이상의 수에서 공통된 약수를 공약수라고 한다.
12의 약수 -> 1, 2, 3, 4, 6, 12
20의 약수 -> 1, 2, 4, 5, 10, 20
공약수 -> 1, 2, 4
최대공약수(공통된 값 중에 가장 큰 값) -> 4
소인수분해를 이용하면 최대공약수 및 공약수를 구할 수 있다.
좀 더 편리하게 최대공약수를 구하는 방법. 소수로 나눗셈하자.
두 개의 수를 입력하면 공약수와 최대공약수를 출력하는 코드를 작성하자
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_계차 수열
-두 항의 차로 이루어진 또 다른 수열
-계차 수열을 이용해서 수열의 일반항을 구할 수 있다.