앙앙123
98
2021-04-26 19:23:55
5
190

c언어 간단한 프로젝트 질문입니다


소수만 출력하는 프로젝트를 만들어봤는데요 실행하면 이렇게 나오네요 뭐가 잘못된 건가요?

아직 배운지 얼마 안 되서 형편없어도 양해 부탁 드립니다 ㅠㅠ



#include <stdio.h>


int main(void)

{

int num;

printf("2이상의 정수를 입력하세요: ");

scanf_s("%d", &num);

for (int i = 2; i <= num; i++)

{

for (int j = 2; j < i; j++)

{

if ((i%j) == 0) 

{

break;

}


else 

{

printf("%3d\n", i);

}



      }

}




return 0;

}

0
  • 답변 5

  • WRITE_IN_DART✎
    2021-04-26 22:36:11 작성 2021-04-26 22:44:07 수정됨

    num이 12라고 생각하시고 한번 생각으로 프로그램을 돌려보세요...

    저건 코딩이 아니라 로직이 잘못된거라 뭐라 해드릴 말이 없어서....


    아래 코드로 시도해 보시면 더 쉬울듯..

    진짜 모르시겠음 댓글 주세요..


    #include <stdio.h>
    #include <stdlib.h>
    #include <stdbool.h>
    
    void execute_test(char *description, bool actual, bool expact);
    bool is_prime_number(int num);
    
    int main(void)
    {
        execute_test("3", is_prime_number(3), true);
        execute_test("4", is_prime_number(4), false);
        execute_test("5", is_prime_number(5), true);
        execute_test("6", is_prime_number(6), false);
        execute_test("7", is_prime_number(7), true);
        execute_test("8", is_prime_number(8), false);
        execute_test("9", is_prime_number(9), false);
        execute_test("10", is_prime_number(10), false);
        execute_test("11", is_prime_number(11), true);
        execute_test("12", is_prime_number(12), false);
        execute_test("13", is_prime_number(13), true);
        execute_test("14", is_prime_number(14), false);
        execute_test("15", is_prime_number(15), false);
        execute_test("16", is_prime_number(16), false);
        execute_test("17", is_prime_number(17), true);
    
        printf("모든 테스트 성공\n");
        return 0;
    }
    
    
    void execute_test(char *description, bool actual, bool expact)
    {
        if (actual == expact)
            printf("%s: 테스트 통과\n", description);
        else
        {
            printf("%s: 테스트 실패\n", description);
            exit(3);
        }
            
    }
    
    bool is_prime_number(int num) {
        /* Write code here */
    }


  • 간장대디
    32
    2021-04-27 13:55:09

    j 라는 변수를 크게하면서 i에 나누고 있는 상황인데


    나눌때마다 출력을 해버려서 그래요


    소수라는게 판정되면 출력을 한번하도록 바꿔보는게 어떨까요

  • 앙앙123
    98
    2021-04-28 19:35:46

    printf("%3d\n", i); 뒤에 break를 써서  반복되는 건 해결했습니다.

    근데 소수가 아닌 홀수가 나오네요. 이건 뭐가 잘못된 건가요?

  • WRITE_IN_DART✎
    2021-04-28 22:38:37

    그야 소수는 1과 자신을 사이의 모든 수로 나눠지지 않아야 하는데 제시하신 코드는 그렇지 않잖아요?

  • WRITE_IN_DART✎
    2021-04-28 22:39:33

    그리고 코드를 수정하셨으면 수정하신 전체 코드에 주석으로 수정한 부분을 표시해주세요.

    코드는 공지 보고 code-block으로 올려주시구요..

  • 로그인을 하시면 답변을 등록할 수 있습니다.