티스토리 뷰

어떤 수를 소수의 곱으로만 나타내는 것을 소인수분해라 하고, 이 소수들을 그 수의 소인수라고 합니다.
예를 들면 13195의 소인수는 5, 7, 13, 29 입니다.

600851475143의 소인수 중에서 가장 큰 수를 구하세요.



#include <stdio.h>

#include <math.h>

 

#define PRIME_NUM 600851475143

 

int isPrime( unsigned long n ){

unsigned long i, sqrn;

    sqrn = (unsigned long)sqrt(n);

    for( i = 2; i <= sqrn; i++ )

         if( ( n % i ) == 0 )

             return 0;


     return 1;

}



int main( int argc, char* argv[] ){

     unsigned long Num = sqrt(PRIME_NUM);


     if( ( Num % 2 ) == 0 )

         --Num;


     while( 1 ){

         if( ( ( PRIME_NUM % Num ) == 0 ) && isPrime( eNum ) ){

             break;

         }

         Num -= 2;

     }


     printf( "Max Prime Number = %lu\n", Num );

     return 0;

}

'알고리즘 > 오일러 프로젝트' 카테고리의 다른 글

오일러 프로젝트 9번  (0) 2016.04.14
오일러 프로젝트 6번  (0) 2016.04.03
오일러 프로젝트 4  (0) 2016.03.22
오일러 프로젝트 2번  (0) 2016.03.13
오일러 프로젝트 1번 문제  (0) 2016.03.13
댓글