作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要一个 python 3.3 程序的帮助,该程序应该执行俄罗斯农民乘法/古埃及乘法。作业说,“如果“A”和“B”是要相乘的两个整数,我们重复将“A”乘以 2 再将“B”除以 2,直到“B”不能再除且不为零(整数除法)。在每组乘“A”和除“B”的过程中,如果“B”的值是奇数,则将“A”的值添加到总数中。最后,总和所有“A”值(当“B”为奇数时)应等于原始“A”和“B”输入的乘积。简而言之,求和“B”为奇数的所有“A”值它将等于(或接近)“A”和“B”的乘积。
编辑
我可能对某些问题的表述有误。
这是一个例子:
如果“A”为 34,“B”为 19,则每行将“A”乘以二,将“B”除以二。
“A”“B”
(34) (19)(“B”是奇数,加“A”到总数)
(68) (9)(“B”是奇数,加“A”到总数)
(136) (4) (“B”为偶数,忽略“A”值)
(272) (2) (“B”为偶数,忽略“A”值)
(544) (1)(“B”是奇数,加“A”到总数)
当您对“A”的所有值求和时,“B”为奇数,您会得到 (34 + 68 + 544 = 646),这等于将“A”和“B”相乘,(34 * 19 = 646)。
当“B”为奇数时,我遇到的问题是将“A”加到总数中。
这是我目前的情况,
x = int(input("What is the first number? "))
y = int(input("What is the second number? "))
answer = 0
while y != 0:
if (y%2 != 0):
x*2
y//2
answer == answer + x
if (y%2 == 0):
x*2
y//2
print("the product is",(answer))
我是 python 和编程的新手,因此非常感谢任何帮助和/或解释为什么它的错误。
最佳答案
你需要先添加x来回答,然后再更新x
这是正确的代码
x = int(input("What is the first number? "))
y = int(input("What is the second number? "))
answer = 0
while y != 0:
if (y%2 != 0):
answer=answer+x
x=x*2
y=y//2
if (y%2 == 0):
x=x*2
y=y//2
print("the product is",(answer))
关于python - 俄罗斯农民乘法 Python 3.3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638078/
我是一名优秀的程序员,十分优秀!