인프런 커뮤니티 질문&답변

이2님의 프로필 이미지
이2

작성한 질문수

홍정모의 따라하며 배우는 C언어

7.6 소수 판단 예제

마지막예제 형태에서 2번쨰if에 붙은 프린트f가 작동하지않는이유...?

작성

·

149

0

#include <stdio.h>

#define _CRT_SECURE_NO_WARNINS

#include <stdbool.h>

int main()

{

unsigned num, div;

bool isprime = true;

scanf("%u", &num);

for (div = 2; (div*div) < num; ++div)

{

if (num % div == 0)

{

isprime = false;

if (num == div * div)

printf("%u div by %u\n", num, div);

else

printf("%u div by %u and %u\n", num, div, num / div);

}

}

if (isprime)

printf("%u 는 소수다", num);

else

printf("%u 는 소수가아니다", num);

return 0;

}

위와같이 작성했는데 실행시켜서 16을 입력하면 아래사진처럼 됩니다. 혹시나해서 중괄호로if와 else둘다 스코프를 나눠봐도 동일합니다...

답변 1

0

안녕하세요.

for문의 반복 조건을 (div * div) < num 로 해주셨기 때문에 

div * div == num 인 경우엔 for문 안에 들어가지 못하기 때문입니다. 

for문의 반복 조건을 (div * div) <= num 로 바꿔주세요.

이2님의 프로필 이미지
이2

작성한 질문수

질문하기