我正在嘗試計算某個數組中元素數量組合的數量。我需要確切數量的組合來將它用作GPU中要執行的線程數。由於非常大的因子,無法計算組合數量
但是數據非常大,無法用任何數據類型計算該大數的因子。
有沒有一種方法來計算組合的數量,而無需找到階乘?或者更有效的方式來做到這一點?
它總結了此問題:
int no_of_combinations = combination(500,2);
public static int factorial(int m)
{
int x = 1;
for (int i = m; i > 0; i--)
x = x * i;
return x;
}
public static int combination(int m, int n)
{
int x = 0;
x = factorial(m)/(factorial(n) * factorial(m - n));
return x;
}
你能更具體嗎?哪個配方和什麼「非常大」?順便說一句,有一個專門網站的所有數學相關的問題:[http://math.stackexchange.com/](http://math.stackexchange.com/)。 – Sinatr
我不確定這是否會有所幫助,但您是否擡頭看斯特林的逼近?這是階乘的近似值。 – Alchemist
如果你甚至不能用已知的數據類型表示數字,你將如何創建相同數量的線程? – HansP