반응형
소인수분해
VBA를 이용해서 소인수분해를 해보자.
우선 시트에 다음과 같이 입력하고
실행버튼에 다음 코드를 연결한 후
Sub Prime_Click()
Dim S As String
Dim C As Long, D As Long, X As Long, Y As Long, F As Long
C = 0 '소인수로 나눈 횟수. 0으로 리셋
P = 2 '소인수. 2부터 시작해서 3, 5, 7, ...로 증가
F = 0 '소인수 갯수. 0으로 리셋
[B5] = "" '소인수분해 결과 나오는 곳. 이전 결과를 지워야 함
X = [B3] '입력한 자연수
Do
Y = X / P 'X를 P(소인수)로 나누는데
If (X Mod P) = 0 Then 'X가 P로 나누어 떨어지면
X = Y '나눈 몫 Y를 X로 다시 지정
C = C + 1 'X를 P로 몇번 나눴나 count
Else
If C <> 0 Then '한번이라도 나누어 떨어지면
F = F + 1 '소인수 갯수를 count
If F > 1 Then '소인수 갯수가 2개 이상이면
S = S & " *" '결과 중간에 * 를 넣음
End If
S = S + Str(P) '결과 문자열에 소인수를 기록
If C > 1 Then '2회 이상 나누어 떨어졌으면
S = S + " ^" + Str(C) '결과 문자열에 ^ 와 횟수를 기록
End If
C = 0 '나눈 횟수를 0으로 리셋
End If
If P = 2 Then '소인수가 2면
P = P + 1 '다음 소인수는 3이니까 1을 더함
Else '소인수가 3 이상이면
P = P + 2 '다음 소인수는 홀수니까 2를 더함
End If
End If
Loop While Y >= 1
[B5] = S
End Sub
B3 Cell에 아무 자연수나 입력하고 실행하면
빠르게 소인수분해 결과를 얻을 수 있다.
반응형
'Excel VBA 응용' 카테고리의 다른 글
Factorial 계산하기 (0) | 2023.12.03 |
---|---|
Plot Digitizer (0) | 2023.12.02 |
TSP (Traveling Salesman Problem) (0) | 2023.11.30 |
Stop Watch (0) | 2023.11.29 |
콜라츠 추측 (0) | 2023.11.29 |