kkaryking   3년 전

소수 출력이 정상적으로 되는데 결과는 틀렸다고 하네요 ㅜㅜ

어디가 틀린건지 말씀해주실분 계신가요 ㅠㅠ

1출력 안되고 2도 출력되고

N, M 포함 출력되는데도 그러네요 ㅠㅠ

감사합니다!!


cheetose   3년 전

  for(int y = i*i ; y <= M ; y += i)

i*i가 아니라 i+i입니다

kkaryking   3년 전

와우 정말 감사합니다.... 해결되었습니다!

명절 잘보내세요~ 감사합니다!

3587jjh   3년 전

y가 i * i 부터 시작하는거 자체는 문제가 되지 않습니다.

다만 i가 백만정도까지 올라가는데 i * i가 오버플로우가 일어나서 y가 이상한 값에서부터 시작해서 그렇죠

오버플로우 방지를 위해서 12째줄을 if(i <= M / i) 로 바꾸면 맞을수있습니다.,

i+i로 바꿔서 해결된 거는 i*i가 이상한 음수값을 가져서 12째줄 if문을 의도치않게

통과하고 y의 시작은 i+i부터 정상적으로 시작해서 그렇습니다

kkaryking   3년 전

감사합니다 ㅠㅠ와 ㅠㅠ

의문점이 완전 해결되었습니다!

오버플로우를 생각 못했네요!

정말 감사합니다 3587jjh님 명절 잘보내세요

댓글을 작성하려면 로그인해야 합니다.