2011-03-09 23 views
0

我確定我以前在學校有這個,但我不記得這個東西叫做什麼。如何計算減小的值何時達到某個點?

我有任意數字,我需要知道多少次我可以乘以0.9(或任何其他值0-1),直到從原始數字小於x剩餘。

在一個循環的格式它看起來像

num = 4654; 
mult = 0.9; 
limit = 140; 
count = 0; 
while(num >= limit){ 
    num *= mult; 
    count++; 
} 

但是,這甚至有可能沒有環辦?有對數的東西?

回答

6

注意

num * (0.9)^k <= limit 

是要滿足一些整數k的不平等,以及你所尋求的最小這樣k。然後

(0.9)^k <= limit/num 

k * log(0.9) <= log(limit/num) 

使

k >= log(limit/num)/log(0.9) 

在不平等逆轉,因爲log(0.9) < 0。因此,取最大整數k大於log(limit/num)/log(0.9)

所以,取上限爲log(limit/num)/log(0.9)

當然,這概括了由r更換0.9其中r(0, 1)你事半功倍。

1

數=日誌(極限/ NUM)/日誌(多重)

相關問題