일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
- nonhomogeneous linear system
- homogeneous linear system
- recursive algorithms
- itertools
- trivial solution
- 코틀린 Hello World!
- 이진 탐색
- 빅오 표기법
- 빅세타
- Big-O 예제
- Big Theta
- 재귀함수
- matrix-vector product
- linear dependence
- matrix fo a linear transformation
- nontrivial solution
- 일차변환
- solutions of matrix equation
- matrix trnasformations
- Big-Oh notation
- 코틀린 시작하기
- Big-Oh 예제
- python
- 배열 섞기
- NumPy
- one-to-one
- 알고리즘 분석의 실례
- Big Omega
- 빅오메가
- 랜덤 순서 배열
- Today
- Total
코딩 연습
프로젝트 오일러 문제를 풀다보면 두 자연수의 최대공약수를 구해야 하는 경우가 빈번히 발생한다. 이때 유클리드 알고리즘(유클리드 호제법)을 이용하여 쉽게 최대공약수를 구하는 함수를 소개하고자 한다. def gcd(a, b): if a < b: (a, b) = (b, a) while b != 0: (a, b) = (b, a % b) return a 먼저 \(a\) 쪽이 항상 크도록 해주고, \(a\)와 \(b\) 의 최대공약수는 \(b\)와 \(a\) 를 \(b\)로 나눈 나머지와의 최대공약수와 같기 때문에, 나머지가 \(0\) 이 될때까지 이 작업을 반복해 준다. \(b\) (=나머지)가 \(0\) 일 때의 \(a\) 값이 \(a, \;b\) 의 최대공약수가 된다.
처음으로 파이썬에서 완전제곱수를 판별하는 함수를 만들려고 단순히 제곱근이 정수이면 된다고 생각해었다. 그래서 다음과 같은 함수를 만들었었다. def issquare(n): temp = n ** 0.5 if int(temp) == temp: return True else: return False 그런데 이게 제대로 작동을 안하는 것이었다. \(89011483755109777\) 은 완전제곱수가 아닌데도 제곱근이 정수로 출력되는 것을 볼 수 있다. 소숫점 이하가 아주 작을 경우 버림을 해버리기 때문에 발생하는 일이다. 따라서 이것만으로는 완전제곱수인지 판단하기 어려우므로, 제곱근을 다시 제곱해서 원래의 수가 나오는지 확인해야 한다. def issquare(n): temp = n ** 0.5 if int(te..
import math def primecheck(n): if n == 2 or n == 3: return True if n % 2 == 0 or n == 1: return False for i in range(3, int(math.sqrt(n)) + 1, 2): if n % i == 0: return False return True if __name__ == "__main__": yn = "y" while yn == "y" or yn == "Y": n=input("소수인지 확인하고 싶은 수는? ") if primecheck(int(n)): print("%d는(은) 소수입니다." % int(n)) else: print("%d는(은) 합성수입니다." % int(n)) yn = input("계속 확인하시겠습니..