2011-11-14 15 views
0

私はいくつかの簡単な数学計算とC#でそれらを実行する最も効率的な方法について助けが必要です。均等割り算の天井番号

10/4 = 2.5 

合計が10進値であるかどうかを判断するにはどうすればよいですか?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がより大きい又はB
  • xに等しい分割を
が最小化される
  • 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'。また、要素はペアで発生し、少なくとも1つは '<= sqrt(A)です。 '' sqrt(A)> B> x1'、 'x = A/x1'のように単純に終了することはできませんので注意してください。 ) '。 – Keith

    関連する問題