在不使用“*”和按位运算的情况下,如何有效地将两个数字相乘?(只需使用 +、-、/ 等运算符)。
问问题
1882 次
2 回答
1
a*b == 10^(Log(a*b)) == 10^(Log(a) + Log(b)) == exp(ln(a) + ln(b))
其中^
表示取幂,Log
是以 10 为底的对数
于 2013-04-10T09:56:57.717 回答
0
multiply(a,b):
if(a==0) return 0
r<-0
while(b/a!=r) r++
return r
好吧,我在开玩笑,但你应该提供更多关于你的搜索的信息:什么是你的有效方法?你能给出搜索的复杂度的近似值吗?还是您想要最有效的算法?因为,如果您不精确,我也可以回答:
multiply(a,b):
r<-0
while(a!=0)
r<-r+b
b<-b-1
return r
于 2013-04-10T09:59:43.333 回答