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