SARACEN's Blog
  • [C언어]Project Euler(프로젝트 오일러) 7 번
    2020년 08월 05일 03시 27분 22초에 업로드 된 글입니다.
    작성자: RACENI
    ::문제::
    소수를 크기 순으로 나열하면 2, 3, 5, 7, 11, 13, ... 과 같이 됩니다.
    이 때 10,001번째의 소수를 구하세요.

    ::문제 주소::
    https://euler.synap.co.kr/problem=7

     

    -이하 소스 코드-
    소수를 더 효율적으로 판별할 수 있는 알고리즘을 고안해보십시오.

    #include <stdio.h>
    #include <stdbool.h>
    
    int prime(int num)
    {
        bool check = true;
    
        if(num % 2 == 0)
            return 0;
    
        if(num % 3 == 0)
            return 0;
    
        for(int i = 2; i < num; i++)
        {
            if(num % i == 0)
            {
                check = false;
            }
        }
        
        if(check)
        {
            return num;
        }
        else
        {
            return 0;
        }
    }
    
    
    int main()
    {   
        int count = 2;
    
        for(int i = 5; count <= 10001; i++)
        {
            if(prime(i) > 0)
            {
                count++;
                if(count == 10001)
                {
                    printf("%d", prime(i)); // 104743
                    return 0;
                }
            }
        }
        return 0;
    }
    댓글