整数除法与常规除法

时间:2012-06-30 21:54:29

标签: c double long-integer sieve

我需要将循环中的整数与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 s的数组。顺便说一句,这段代码是正确的:

primes[i*prime] = 0;

因为我担心long * int不会对数组索引起作用。

非常感谢!

2 个答案:

答案 0 :(得分:3)

为什么不while((i * prime) < inputNumber)呢? long乘以int会产生long ...

答案 1 :(得分:1)

您可以将整数除法的一个操作数乘以1.0,以避免结果的整数截断。