The prime factors of 13195 are 5, 7, 13 and 29.
What is the largest prime factor of the number 600851475143 ?
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
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
댓글 없음:
댓글 쓰기