작성
·
233
0
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
안녕하세요 처음 하는 c++수업인데 좋은 강의 잘 듣고 있습니다.
선생님께서 말씀하신 i의 배수를 통해 개수를 구한다고 하셨는데
for (int i = 1; i <= a; i++)
{
for(int j=i; j<=a; j=j+i)
{
cnt[j]++;
}
for(j=i; j<=a; j=j+i)부분 에서 j=j+i가 어떻게 i배수로 되는지 이해가 되질 않습니다. 제가 알기론 증감 부분인데
그러면 j=j+i에서 i=1, j=1일때 j=1+1로 2가 되면서 1~2로 cnt[1] cnt[2]에만 cnt[j]에 1씩 들어가고
i=2일떄 j=2가 되면서 j=2+2=4가 되는데 그러면
cnt[2]=2 cnt[4]=1이 되는게 맞는건가요?
답변 1
0
안녕하세요^^
만약 a = 8이라면
i=1일때
j = 1
j = 1 + 1 = 2
j = 2 + 1 = 3
j = 3 + 1 = 4
.
.
j = 7 + 1 = 8
j <= 8이 참일때까지 1씩 증가하면서 반복해 cnt[j]를 1씩 증가시킵니다.
또 i=2일 때
j = 2
j= 2 + 2 = 4
j = 4 + 2 = 6
j = 6 + 2 = 8
j <= 8이 참일때까지 2씩 커지면서 반복해 cnt[j]를 1씩 증가시킵니다.
즉 i=2일때 cnt[2] = 2이고 cnt[4] = 2입니다.
cnt[4]는 i=1일때 이미 한 번 증가했었습니다.