작성
·
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 로 바꿔주세요.