2015-10-15 39 views
1

在這裏,有幾個問題是關於如何將值舍入爲已知倍數。例如,有question,但它顯示瞭如何將值四捨五入爲指定倍數(例如,從9到5的倍數將產生10)。我想將一個值舍入到給定數字的最接近的因子。比如讓說,我想一個值向上舍入的48如何將數值向上舍入到數字的最接近係數

Factors of 48: 1, 2, 3, 4, 6, 8, 12, 16, 24, 48 

最接近的因素。如果我的價值是9我想圍捕到12,我知道做到這一點的唯一方法是用蠻力部隊:

class Program { 
    static void Main(string[] args) { 
     const int clock = 48; 
     int value = 9; 

     while(value < clock && (clock % value) != 0) { 
      value++; 
     } 

     Console.WriteLine(value); 
    } 
} 

這工作正常,但它不聰明或有效率,至少我懷疑是這種情況。 有沒有更好的方法來將數字四捨五入爲除蠻力之外的基數的因子?

+0

澄清了問題陳述和解決爲什麼提供的參考重複的問題不適用。 –

+0

跛腳,這是作爲愚蠢的封閉,但引用的重複問題和解決方案不解決我的問題。大衛,你看過我的真實問題,還是僅僅根據冠軍頭銜做出決定? –

+0

來到這裏尋找相同的。令人失望的發現這不正確關閉。 – mcallinder

回答

0
private int UCLN(a, b) { 
return (b==0)? a:UCLN(b, a%b) } // first input a>b 

主要功能:

int u = UCLN(clock, value); 

return clock/((clock/u)/(value/u)); 
相關問題