Witam
mam za zadanie wypisać w excelu liczby pierwsze od 2 do 4999 i przyznam, że nie mam pojęcie jak to należy zrobić, jeżeli ktoś wie to bardzo proszęo pomoc.
Z góry dziękuję
[Excel] liczby pierwsze
-
- Moderator
- Posty: 2828
- Rejestracja: 15 cze 2008, o 15:45
- Płeć: Mężczyzna
- Lokalizacja: Seattle, WA
- Podziękował: 3 razy
- Pomógł: 356 razy
[Excel] liczby pierwsze
Chyba bez Visual Basic for Applications się nie obejdzie. Ewentualnie możesz poszukać gotowego wzoru na n-tą liczbę pierwszą (tak, takie wzorki są) i go wykorzystać, ale z VBA jest łatwiej Oczywiście mogę się mylić
Edit:
Coś mniej więcej takiego. Nie mam możliwości przetestowania, a w VBA pisałem ostatni raz parę lat temu, więc może tutaj być trochę błędów
Edit:
Kod: Zaznacz cały
Sub pierwsze()
Dim zlozona As Integer
Dim komorka As Integer
komorka = 1
For i = 2 To 4999
zlozona = 0;
For j = 2 To i
If j<i Then
If i MOD j = 0 Then
zlozona = 1
End If
End If
Next j
If zlozona = 0 Then
Cells(komorka,1) = i
komorka = komorka + 1
End If
Next i
End Function
Ostatnio zmieniony 12 cze 2010, o 18:42 przez Afish, łącznie zmieniany 1 raz.
- Inkwizytor
- Użytkownik
- Posty: 4105
- Rejestracja: 16 maja 2009, o 15:08
- Płeć: Mężczyzna
- Lokalizacja: Poznań
- Podziękował: 1 raz
- Pomógł: 428 razy
[Excel] liczby pierwsze
"Metoda chałupnicza" taka na chłopski rozum
Jeżeli liczba n nie jest pierwszą to istnieje taki dzielnik d (l. pierwsza) \(\displaystyle{ 1 < d \le \sqrt{n}}\)
\(\displaystyle{ \sqrt{4999} = 70,7036}\)
Wypisz liczby pierwsze od 2 do 70 i jeśli nie dzieli się przez żadną z nich to jest to liczba pierwsza.
Nawiasem pisząc do sprawdzania liczb powyżej 2 można brać tylko te nieparzyste
Jeżeli liczba n nie jest pierwszą to istnieje taki dzielnik d (l. pierwsza) \(\displaystyle{ 1 < d \le \sqrt{n}}\)
\(\displaystyle{ \sqrt{4999} = 70,7036}\)
Wypisz liczby pierwsze od 2 do 70 i jeśli nie dzieli się przez żadną z nich to jest to liczba pierwsza.
Nawiasem pisząc do sprawdzania liczb powyżej 2 można brać tylko te nieparzyste
[Excel] liczby pierwsze
Można też zrobić tabelkę 2500x2500 i wklepać jeżeli z mod() i potem zliczyć zera DD jak nie ma to liczba jest pierwsza