일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 연산자
- 딥러닝
- JavaScript
- 머신러닝야학
- MySQL
- tensorflow
- 머신러닝
- 데이터베이스
- Database
- reshape
- 머신러닝(딥러닝)
- 카카오클라우드스쿨2기
- 야학
- 파이썬
- 이것이 자바다
- 판다스
- 데이터베이서
- 생활코딩 머신러닝야학
- 생활코딩 데이터베이스
- 생활코딩
- CNN
- Python
- pandas
- 데이터베이스 개론
- 개발자
- Java
- flatten
- LeNet
- Today
- Total
IT's 우
파이썬 자료구조와 알고리즘_소수 본문
다음 예제에서는 세 가지 다른 방법으로 한 숫자가 소수(prime number)인지 판단한다. 수수란 자신보다 작은 두 개의 자연수를 곱하여 만들 수 없는 1보다 큰 자연수다. 즉, 약수로 1과 자기 자신만을 가지는 수다. 첫 번째 함수는 브루트 포스(brute force), 즉 무차별 대입 방법을 사용한다. 두 번째 함수는 제곱근을 이용한다. 끝으로 마지막 함수는 확률론적 테스트와 페르마의 소정리(Fermat's little theorem)를 사용한다.
#finding_prime
import math
import random
def finding_prime(number):
""" brute force(마구잡이/ 무차별 대입 방법) """
num = abs(number)
if num < 4 : return True
""" 2에서 num까지의 연속된 수를 갖고, brute force(마구잡이/ 무차별 대입) """
for x in range(2, num):
if num % x == 0:
return False
return True
def finding_prime_sqrt(number):
""" 제곱근 이용 """
num = abs(number)
if num < 4 : return True
for x in range(2, int(math.sqrt(num)) + 1):
if number % x ==0:
return False
return True
def finding_prime_fermat(number):
""" 페르마 소정리 이용 """
if number <= 102:
for a in range(2, number):
if pow(a, number -1, number) != 1:
return False
return True
else:
for i in range(100):
a = random.randint(2, number -1)
if pow(a, number - 1, number) != 1:
return False
return True
def test_finding_prime():
number1 = 17
number2 = 20
assert(finding_prime(number1) is True)
assert(finding_prime(number2) is False)
assert(finding_prime_sqrt(number1) is True)
assert(finding_prime_sqrt(number2) is False)
assert(finding_prime_fermat(number1) is True)
assert(finding_prime_fermat(number2) is False)
print("테스트 통과!")
if __name__ == "__main__":
test_finding_prime()
출처: 파이썬 자료구조와 알고리즘, 미아 스타인 지음 최길우 옮김
'알고리즘 > 파이썬 알고리즘' 카테고리의 다른 글
파이썬 자료구조와 알고리즘_스택(Stack), 큐(Queue) (0) | 2021.04.01 |
---|---|
파이썬 자료구조와 알고리즘_피보나치 수열 (0) | 2021.03.13 |
파이썬 자료구조와 알고리즘_random 모듈 (0) | 2021.03.13 |
파이썬 자료구조와 알고리즘_최대공약수 (0) | 2021.03.13 |
파이썬 자료구조와 알고리즘_진법 변환 (0) | 2021.03.13 |