C 整数除法与正则除法

C 整数除法与正则除法,c,double,long-integer,sieve,C,Double,Long Integer,Sieve,我需要将循环中的整数与along和along的商进行比较。为了不进行整数除法,如果我理解正确,是否需要将其中一个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? wh

我需要将循环中的整数与a
long
和a
long
的商进行比较。为了不进行整数除法,如果我理解正确,是否需要将其中一个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++;
}
因为我担心
long*int
对数组索引不起作用


非常感谢

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

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

为什么不将
改为((i*prime)
long
乘以
int
得到
long

为什么不
,而((i*prime)
?一个
long
乘以一个
int
得到一个
long

不要太匆忙地接受。。。奥利的答案更好。不要太匆忙地接受。。。奥利的答案更好。不仅如此,因为
i*prime
立即被用作索引,所以它不需要重新计算。当然存在溢出问题(但已经存在)。不仅如此,而且由于
i*prime
立即被用作索引,因此不必重新计算。当然存在溢出的问题(但已经存在)。
primes[i*prime] = 0;