2012-06-30 79 views
0

我需要將循環中的整數與longlong的商進行比較。爲了不做整數除法,如果我理解正確,我是否需要將其中一個long轉換爲double?整數除法與常規除法

long prime = primes[d]; 
int i = 1; 

// "inputNumber/prime" should not be integer division, while it is now. 
// How do I do this yet still compare it to an "int" afterwards? 
while (i < (inputNumber/prime)) 
{ 
    primes[i*prime] = 0; 
    i++; 
} 

這就是代碼片段。 primes是一個填充了long的數組。順便說一句是這樣的代碼正確的:

primes[i*prime] = 0; 

,因爲我擔心一個long * int不會爲數組索引工作。

非常感謝!

+0

不接受過急...奧利奇的回答是好。 –

回答

1

您可以乘以1.0的整數除法操作數之一以避免整數截斷結果。

3

爲什麼不用while((i * prime) < inputNumber)代替?一個longlong乘以一個int結果...

+0

不僅如此,而且因爲'i * prime'被立即用作索引,所以不必重新計算。當然有一個溢出問題(但已經存在)。 –