logowanie

matematyka » forum » matematyka » temat

Wielomiany generujace liczby pierwsze

ostatnie wiadomości  |  regulamin  |  latex

AutorWiadomość

nk_1
postów: 14
2017-11-20 11:48:30

Analizowałem sposób (podobny do sita Eratostenesa ale szybszy) na wyznaczenie liczb pierwszych tzw. Sito Małgorzaty opisany pod linkiem: https://1drv.ms/b/s!AsqwpKK-51whhhzzvgOxdib8Y_rW. Doszedłem do wniosku, że jeżeli w ciagu wyznaczonym przez sito Małgorzaty będzie bardzo wiele kolejnych liczb złożonych to w określonej odległości od tego miejsca pojawią się liczby pierwsze w stałych odległościach. Długość ciągu kolejnych licz pierwszych może być dużo większa niż co obecnie pisze się w Internecie o wielomianach generujących liczby pierwsze.

Poniżej załączam makro w Excelu wyznaczając liczby pierwsze wyżej wymienioną metodą.
Sub sito()
Dim j, i As Long
Dim a, b As Long
Dim t As Boolean
Dim f As Boolean
Dim x_max As Long
Dim x As Long
Dim yp As Long
Dim pk As Integer
Dim pky As Integer
Dim pk_max As Integer
Dim pk_min As Integer
Range("B:Z").ClearContents
'ilosc danych w kadej kolumnie np. 1040000
x_max = Range("A1").Text
'ilosc kolumn - wartosc max 25
pk_max = Range("A2").Text
' zaczynamy od 2 kolumny
pk = 2
pky = 2
pk_min = 2
pk_max = pk_max + 1
t = True
' wartsc pocztkowa dla iteracji
yp = 1
i = 0
Do
i = i + 1
' wartsc pocztkowa x dla danej iteracji i
x = yp
'wyliczenie wartosci a i b
a = 1 + 2 * i
If t Then
b = 4 * i + 3
Else
b = 4 * i + 1
End If
' ustawienie kolejnoci a czy b - t dla iteracji i , f dla poditeracji
f = t
If Cells(i, pk).Value <> 1 Then
If f Then
x = x + b
yp = x + a
Else
x = x + a
yp = x + b
End If
'zaznaczenie elementu dla danej iteracji
For j = pk_min To pk_max
Do While x < x_max
Cells(x, j) = 1
If f Then
x = x + a
Else
x = x + b
End If
f = Not (f)
Loop
x = x - x_max + 1
Next j
Else
yp = yp + a + b
End If
If Not (yp < x_max) Then
yp = yp - x_max + 1
pky = pky + 1
End If
pk_min = pky
t = Not (t)
Loop Until (pky > pk_max)
End Sub

Wiadomość była modyfikowana 2017-11-26 16:36:31 przez nk_1
strony: 1

Prawo do pisania przysługuje tylko zalogowanym użytkownikom. Zaloguj się lub zarejestruj





© 2019 Mariusz Śliwiński      o serwisie | kontakt   drukuj