2011-11-14 65 views
0

我需要一些簡單的數學計算和在c#中執行它們的最有效方法。均勻分割天花板號碼

10/4 = 2.5 

如何確定是否總和是一個十進制值,如果是我需要第4輪高達5,使其分爲10均勻。

任何想法?

+1

你只會得到一個'2'的計算,因爲這是整數除法。 – Oded

回答

0

這聽起來非常含糊。你可以使用它來解決它

if (10%4 != 0) ... //checks if there is a remainder 

但是如何得到它5需要更多的上下文。

0

這裏是我的一個簡短的功能建議這樣做:

private int FindCeilingDevider(int numberToDivide, int divisor) 
{ 
    double result; 

    do 
    { 
     result = (double) numberToDivide/(double) divisor; 
     divisor++; 
    } 
    while (result != Math.Ceiling(result)); 
    return divisor - 1; 
} 
2

我假設,給出了一些數A和B,你想找到一個數x,使得:

  • X整除甲
  • x大於或等於B
  • x被最小化

在給定的例子,A​​ = 10,B = 4,X = 5 找到X最簡單的對碼的方法是:

public int getX(int a, int b){ 
    while(a % b != 0){ 
     b++; 
    } 
    return b; 
} 

一般來說,這是不容易找到的因素任意數字。事實上,一些計算機領域,如密碼學,取決於大數分解需要很長時間的事實。

+0

假設您不知道有解決方案,您需要錯誤處理 - 因此需要某種失敗值或異常。例如。 'A = 11,B = 4'。此外,因素是成對出現的,其中至少有一個是<= sqrt(A)。注意可能是'sqrt(A)> B> x1'和'x = A/x1',所以我們不能簡單地在'b> sqrt(a )'。 – Keith