2011-11-14 157 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