no można np tak to zrobić:
Sub LiczbyZaprzyjaznione()
'Liczby zaprzyjaźnione to para liczb naturalnych takich,
'że suma dzielników każdej z tych liczb równa się drugiej
'(nie licząc dzielników przez samą siebie).
Dim i As Long
For i = 1 To 63020
SD1 = SumaDzielnikow(i)
SD2 = SumaDzielnikow(SD1)
If SD2 = i Then
Debug.Print SD2 & "-" & SD1
End If
Next i
End Sub
Sub LiczbyZaprzyjaznioneTIQ()
'Wzór generujący niektóre liczby zaprzyjaźnione wynaleziony
'przez arabskiego matematyka Tabita Ibn Qurra'ę ok. roku 850.
'WIKIPEDIA
Dim i As Integer, p As Long, q As Long, r As Long
For i = 1 To 14
p = 3 * 2 ^ (i - 1) - 1
q = 3 * 2 ^ i - 1
r = 9 * 2 ^ (2 * i - 1) - 1
If LiczbaPierwsza(p) And LiczbaPierwsza(q) And LiczbaPierwsza(r) Then
Debug.Print p * q * 2 ^ i & "-" & r * 2 ^ i
End If
Next i
End Sub
Sub LiczbyDoskonale()
'Liczba doskonała- liczba naturalna, która jest sumą wszystkich
'swych dzielników właściwych (to znaczy od niej mniejszych).
Dim i As Long
For i = 2 To 63020
SD1 = SumaDzielnikow(i)
SD2 = SumaDzielnikow(SD1)
If SD1 = SD2 Then
Debug.Print SD1 & "-" & SD2
End If
Next i
End Sub
Function LiczbaPierwsza(ByVal liczba As Long) As Boolean
Dim p As Long
For p = 2 To liczba - 1
If liczba / p - Int(liczba / p) = 0 Then
LiczbaPierwsza = False
Exit Function
End If
Next p
LiczbaPierwsza = True
End Function
Function SumaDzielnikow(ByVal liczba As Long) As Long
'jeżeli liczba naturalna m dzieli liczbę naturalną n bez reszty,
'to liczba m nazywa się dzielnikiem liczby n
Dim p As Long
For p = 1 To liczba - 1
If liczba / p - Int(liczba / p) = 0 Then
SumaDzielnikow = SumaDzielnikow + p
End If
Next p
End Function |