-2

在不使用“*”和按位运算的情况下,如何有效地将两个数字相乘?(只需使用 +、-、/ 等运算符)。

4

2 回答 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 回答