본문 바로가기

컴공스

egyptian_multiplication

@마크다운


[gist](https://gist.github.com/anonymous/5d8d3883dabc365290948f6a395f03ca)

"""
고대 이집트 곱셈법(러시아 농부 곱셈법)

해야하는것
1. 곱하고 싶은 두 수(A,B)를 입력받는다.
- 사용자가 곱할 수 있는 값만 입력한다는 가정

2. A부터 시작해서 2로 나누어 A가 1이거나 1보다 작을때 까지(더 이상 나눌것이 없을때까지) 반복한다.

3. 2.에서 A가 홀수인 경우 B를 더한다.
- 짝수라면 더하지 않는다.

4. A를 2로 나누는 횟수 만큼 B를 2로 곱한다.
"""


def egyptian_multiplication(a, b):
num1 = a
num2 = b
result = 0
cnt = 1
while num1 >= 1:
print("-----{}번째 반복문-----".format(cnt))
if num1 % 2 == 0:
print(
"입력한 a의 현재값은 : {}입니다. 입력한 b의 현재값은 : {}입니다. a가 짝수이므로 result에 더하지 않습니다.\n 현재까지의 result값 : {}".format(num1,
num2,
result))
else:
result = result + num2
print("입력한 a의 현재값은 : {}입니다. 입력한 b의 현재값은 : {}입니다. a가 홀수이므로 result에 더합니다.\n 현재까지의 result값 : {}".format(num1,
num2,
result))
num1 = num1 // 2
num2 = num2 * 2
cnt += 1
print("\n")


def egyptian_multiplication2(a, b):
result = 0
while a >= 1: # 입력받은 a부터 시작해서 반복 2.에 해당
if a % 2 != 0: # a를 2로 나누어 0이 아니라면 (홀수라면) 3.에 해당
result += b # result에 b를 더한다.
a = a // 2
b = b * 2
return print(result)


'컴공스' 카테고리의 다른 글

운영체제1  (0) 2018.05.05
객체란 무엇인가?  (0) 2018.04.14
주어진 리스트에서 정수만 뽑아 제곱하기 (단 lambda,filter,map만 사용)  (0) 2018.02.25
leap_year  (0) 2018.02.11
숫자맞추기 게임  (0) 2018.02.04