카운터에 대한 최대 크기에 대한 간단한 질문이 있습니다. 예를 들어 다음 코드는 적어도 2^512의 산술 연산이 필요하거나 본질적으로 i 2^512 번 값을 변경해야하기 때문에 reasonalbe 시간에 수행 할 수 없어야합니다!매우 큰 카운터 번호에 대한 실행 시간에 대해 간단한 질문이 있습니다
c = 2 to the power 512;
for (i = 1, i < c, i++) {
j = j + 1/(i * i + 1);
}
그러나 컴퓨터 대수 소프트웨어 "Mathematica"를 사용하면 1 초 미만의 대답을 얻을 수 있습니다. 제 질문은 어떻게 이것을 성취 할 수 있겠습니까?
ps. 카운터 크기에 대한 나의 순진한 생각은 복잡성에 대한 제 의견에 기인합니다. 복잡성에 대한 산술 연산의 복잡성에만 초점을 맞추기 때문에 너무 형식적이지 않은 책을 읽을 때 색인의 비용은 항상 생략됩니다. 나는 카운터가 작은 경우에만 이것을 상상할 수 있습니다.
확실히 루프가 i == 1에서 i == 513으로 이동하지 않습니다. 샘플 코드는 어떤 언어입니까? C/C++에서'2^512'는 확실히 514를 산출합니다. – 0xC0000022L
C/C++에서 검사하지 않았습니다. 나는 2^512의 입력 크기가 단지 512라는 것을 알고있다. 그러나 카운터 i에 나타나기 때문에 1에서 2^512까지 실행되어야한다. 즉, 명령 j = j + 1/(i * i + 1) 2^512 시간 동안, 그렇지 않습니까? – user565739