将两个数相乘而不使用“*”运算符和按位运算

时间:2013-04-10 09:51:26

标签: algorithm

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

2 个答案:

答案 0 :(得分:1)

a*b == 10^(Log(a*b)) == 10^(Log(a) + Log(b)) == exp(ln(a) + ln(b))

其中^表示取幂,Log是基数为10的对数

答案 1 :(得分: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