1. 약수와 소수, 소인수분해
(1) 약수 : 어떤 수를 나누어 떨어지게 하는 수
EX) 20의 약수 = 1,2,4,5,10,20 등 20을 나누어 떨어지게 하는 모든 수
- for 문 내의 i 를 반복해서 돌아갈때 나머지가 0이 되는 수를 찾으면 전부 약수가 된다.
(2) 소수 : 1과 자신만을 약수로 가지는 수
EX) 2,3,5,7,11,13,17,19 ... 1과 2/3/5..처럼 약수가 1포함 딱 두개인 수
- 0 으로 나누어 떨어지는 합성수, 나누어 떨어지지 않는 수는 소수로 출력한다.
(3) 소인수분해 : 어떤 수의 약수중에서 소수인 숫자를 소인수라고 하고, 소인수분해는 어떤 수를 모두 소인수만의 곱으로 나타내는것을 말한다.
EX) 20 을 소인수분해하면, 2 2 5 (모두 소인수의 곱)
- 정수 42를 입력받았을때, 그의 소인수를 출력하는 함수로 while문 내에서 나누는수를 최소2로 시작하고 나누어 떨어진다면 계속 반복해서 나누고 그렇지않은 경우 n+1 을 하여 넘어간다.
- 위의 예제와 같이, 소인수 분해를 했을 때 가장 최소의 수를 곱해서 N의 제곱이 되게하려면 무엇을 곱해야하는지.
빈 list를 만들어, 소인수의 개수가 짝수인 경우는 삭제 홀수인 경우만 소인수를 list에 추가해서 곱해야하는 가장 작은수를 찾을 수 있다.
2. 최대공약수와 최소공배수
(1) 공약수
어떤 두 수가 공통으로 가지는 약수. 그 중에서 가장 최대의 수를 최대공약수라 한다. 최대 공약수의 약수들이 공약수가 된다.
- for 문에서,
두 수 모두 0으로 나누어 떨어지는 수로 공약수를 구하고, 그 중 최대를 최대공약수로 구한다.
(2) 공배수
어떤 두 수가 공통으로 가지는 배수. 그 중 가장 작은 수를 최소공배수라 한다. 최소공배수의 배수들이 공배수가 된다.
- 두 수의 최소공배수를 구할때, 두 수의 곱을 최대공약수로 나누면 몫이 최소공배수가 된다.
3. 진법
(1) 10진수
- 우리가 평소에 사용하는 숫자. 0~9까지의 수. X진수를 10 진수로 바꾸고 싶을때, format(int('0x1e',16)) 처럼 써서, 16진수 ox1e를 10진수로 바꾸는것을 format함수로 바꿀 수 있다.
(2) 2진수(binary)
- 10진수 -> 2진수로, 함수 bin(num) 해서, 0b1110 등으로 표기되며, 결과는 문자열형태. 10진수 30 을 2진수로 바꾸고 싶을때, format(30,'b') 도 가능.
(3) 8진수(octal)
- 10진수 -> 8진수로, 함수 oct(num) 해서, 0o36 등으로 표기되며, 결과는 문자열형태. 10진수 30 을 2진수로 바꾸고 싶을때, format(30,'o') 도 가능.
(4) 16진수(Hexadecimal)
- 10진수 -> 16진수로, 함수 hex(num) 해서, ox1e 등으로 표기되며, 결과는 문자열형태. 10진수 30 을 2진수로 바꾸고 싶을때, format(30,'x') 도 가능.
-
각 진수별로 서로 바꾸는 방법에 대한 여러가지 방법작성
4. 수열
-
규칙성을 가지고 나열된 수들을 말한다.
예를 들어, 1 3 5 7 9 11 13 ... 은 2씩 더해지는 규칙이 있고, 2 4 8 16 32 64 ..는 2씩 곱해지는 규칙이 있다.