2010년 10월 29일 금요일

Euler Problem 3

Euler Problem 3 ask;
The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?

My Solution;
'Euler Problem 3
Sub Euler3()
   '변수 선언
   Const Num = 600851475143#
   Dim i, j, temp
   Limit = Int(Sqr(Num))  '찾는 횟수 한계 지정   
   For i = 3 To Limit Step 2  '홀수만, Num의 제곱근까지만 순환
      If Mod2(Num, i) = 0 Then  'i가 Num의 인수인지 확인, Mod가 오버플로라 Mod2함수 작성
         If IsPrime(i) = True Then  '소수인지 확인(함수 호출)
            MaxPrimeFactor = i   '소인수 최대값 변수에 저장
         End If
      End If
   Next   
   MsgBox (MaxPrimeFactor)
End Sub

'주어진 수가 소수인지 확인하는 함수
Function IsPrime(Value As Variant) As Boolean
   Dim Limit, i
   Limit = Int(Sqr(Value))   
   If Value <= 2 Then
      IsPrime = True
      Exit Function
   End If   
   If Mod2(Value, 2) = 0 Then
      IsPrime = False
      Exit Function
   End If   
   For i = 3 To Limit Step 2
      If Mod2(Value, i) = 0 Then
         IsPrime = False
         Exit Function
      End If
   Next   
   IsPrime = True   
End Function

'VBA의 Mod함수는 큰 수에 대해 오버플로가 발생. 따라서 나머지를 구하는 함수 따로 작성
Function Mod2(Num As Variant, Divide As Variant) As Variant
   Dim Mok
   Mok = Int(Num / Divide)
   Mod2 = Num - (Mok * Divide)
End Function

#실행시간(초):  0.28125

댓글 없음:

댓글 쓰기

2.1 벡터(Vector)

  R의 자료구조 : 벡터, factor, 행렬, 배열, 데이터프레임, 리스트 벡터(Vector)는 동일한 형태(예, 숫자)의 데이터 구성인자가 1개 이상이면서 1차원으로 구성되어 있는 데이터 구조입니다. w <- c(1, 2, 3, 4, ...