본문 바로가기
CODING/C

[C언어]Project Euler(프로젝트 오일러) 7 번

by NOBLESSE 2020. 8. 5.
728x90
반응형
::문제::
소수를 크기 순으로 나열하면 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;
}
728x90
반응형