2012-06-30 5 views
0

루프의 정수를 longlong의 지수로 비교해야합니다. 정수 나누기를하지 않기 위해, 내가 올바르게 이해한다면, longs 중 하나를 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++; 
} 

이것은 코드 단편입니다. primeslong으로 채워진 배열입니다. BTW 올바른 코드는 다음과 같습니다

primes[i*prime] = 0; 

나는 long * int가 배열 인덱스에 대해 작동하지 않습니다 걱정 때문에

.

정말 고마워요!

+0

너무 성급하게 받아들이지 마십시오 ... 올리의 대답이 좋습니다. –

답변

1

정수 나누기 피연산자 중 하나에 1.0을 곱하면 결과의 정수 자르기를 피할 수 있습니다.

3

while((i * prime) < inputNumber)이 아닌가요? A longint을 곱한 결과 long ...

+0

그뿐만 아니라'i * prime'은 즉시 색인으로 사용되므로 다시 계산할 필요가 없습니다. 물론 오버플로에 대한 질문이 있습니다 (그러나 이미있었습니다). –