1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #include <stdio.h> int main(void) { int num1=0; int num2=2; int num3=3; int pn=0; int result=0; result = num3 % num2; printf("정수를 입력 하세요 (1~1,000,000) : "); scanf("%d", &num1); if(num1 < 1 || num1 > 1000000) { printf("%d는 범위안의 숫자가 아닙니다",num1); } else { while(num1 != num3) { if(num3 != num2) { if(result == 0) { num2=2; num3++; } } else { pn++; num3++; num2=2; } } printf("1~%d 사이에 존재하는 소수의 총 개수 : %d 개",num1, pn); } return 0; } | cs |
result가 0일 수 없지 않아요?
소수 구하는 알고리즘은 기억이 안 나지만 맨 위에서 한번 result에 값 대입해줬다고 해서 매번 바뀌지 않습니다. 단 한 번 바뀌는 거에요
나눠 떨어지면 result 가 0이 되지않나요 ?
일단 논리를 재검토해봐요
맨처음에 num3 이 3이고 num2가 2라서 result에는 1이 저장되고나서 바뀌는 부분이 안 보이는
|| 수정해봤습니다