씨언어 소수(prime number 찾기) 코드 질문


입력된 양의 정수(X)보다 작은 최대 소수(prime number)을 return하는 사용자 정의 함수 구하기...

3,7 등 같은 소수를 구하려고 합니다. X를 입력하면 사용자 정의 함수에서, for문을 이용해 X보다 작은 숫자들을 소수인지 아닌지 모두 체크해보려 합니다. 그런데, 제가 문법을 잘 몰라서 그런지... result라는 변수가 초기화 되지 않았다고 오류가 뜹니다. for문이 제대로 작동하지 않아서 그런거 같은데, 사용자 정의 함수에서 for문에 어떠한 오류가 있나요?

#include <stdio.h>

unsigned int prob1(unsigned int X);

int main()
{
    unsigned int X=10;
    unsigned int result;

    result = prob1(X);

    printf("%d\n", result);
}

unsigned int prob1(unsigned int X)
{
    unsigned int dump=0, result;
    unsigned int i=0, j;

    for(i=X-1;i>=3;i--)
    {
        for(j=i-1;j>=2;j--)
        {
            if((i%j)!=0)
            {
                continue;
            }
            else if((i%j)==0)
            {
                dump=i;
                break;
            }
        }

        if(dump==0)
        {
            result=i;
            break;
        }

    }


    return result;
  • 2016년 11월 12일에 수정됨
    리눅스(유닉스) 기반의 시스템에서 웹 서비스를 개발하고 있습니다.
  • 2016년 11월 12일에 작성됨

조회수 434


Kakao codefestival banner

1 답변


함수 prob1이 쓰레기값을 리턴할 수 있습니다. prob1에서 dump==0 조건에 걸리지 않을 시 result는 쓰레기값을 담은 채로 리턴됩니다.

    unsigned int dump=0, result=0;

와 같이 result의 값을 초기화해주세요.

  • 2017년 07월 04일에 작성됨
    ლ( ╹ ◡ ╹ ლ) 쭈물

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close