60 lines
1.2 KiB
VB.net
60 lines
1.2 KiB
VB.net
Function CountFactors(n)
|
|
If n = 1 Then
|
|
CountFactors = 1
|
|
Else
|
|
arrP = Split(ListPrimes(n)," ")
|
|
Set arrList = CreateObject("System.Collections.ArrayList")
|
|
divnum = n
|
|
Do Until divnum = 1
|
|
'The -1 is to account for the null element of arrP
|
|
For i = 0 To UBound(arrP)-1
|
|
If divnum = 1 Then
|
|
Exit For
|
|
ElseIf divnum Mod arrP(i) = 0 Then
|
|
divnum = divnum/arrP(i)
|
|
arrList.Add arrP(i)
|
|
End If
|
|
Next
|
|
Loop
|
|
arrList.Sort
|
|
For i = 0 To arrList.Count - 1
|
|
If i = arrList.Count - 1 Then
|
|
CountFactors = CountFactors & arrList(i)
|
|
Else
|
|
CountFactors = CountFactors & arrList(i) & " * "
|
|
End If
|
|
Next
|
|
End If
|
|
End Function
|
|
|
|
Function IsPrime(n)
|
|
If n = 2 Then
|
|
IsPrime = True
|
|
ElseIf n <= 1 Or n Mod 2 = 0 Then
|
|
IsPrime = False
|
|
Else
|
|
IsPrime = True
|
|
For i = 3 To Int(Sqr(n)) Step 2
|
|
If n Mod i = 0 Then
|
|
IsPrime = False
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
End Function
|
|
|
|
Function ListPrimes(n)
|
|
ListPrimes = ""
|
|
For i = 1 To n
|
|
If IsPrime(i) Then
|
|
ListPrimes = ListPrimes & i & " "
|
|
End If
|
|
Next
|
|
End Function
|
|
|
|
'Testing the fucntions.
|
|
WScript.StdOut.Write "2 = " & CountFactors(2)
|
|
WScript.StdOut.WriteLine
|
|
WScript.StdOut.Write "2144 = " & CountFactors(2144)
|
|
WScript.StdOut.WriteLine
|