성원이는 수업에서 에라토스테네스의 체를 배운 뒤 기억에 의존해 C++로 구현했다. 옆에 있던 형석이는 코드가 틀렸음을 지적했고 두 사람은 6번째 줄의 실행 횟수를 직접 세어 보기로 했다. 그 작업을 대신 받아 n이 주어졌을 때 6번째 줄이 몇 번 실행되는지 구한다.
코드는 다음과 같다.
int n;
cin >> n; // read n
int* sieve = new int[n + 1];
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n; j += i) {
sieve[j] += 1; // 6번째 줄
}
}
바깥 루프는 i를 1부터 n까지 돈다. 안쪽 루프는 j를 1부터 시작해 i씩 증가시키며 n을 넘지 않는 동안 돈다. 6번째 줄은 안쪽 루프의 몸통이며 그 총 실행 횟수를 구하는 것이 과제이다.