[Excel] liczby pierwsze

aska2764
Użytkownik
Użytkownik
Posty: 167
Rejestracja: 10 sty 2009, o 15:36
Płeć: Kobieta
Lokalizacja: Rzeszów

[Excel] liczby pierwsze

Post autor: aska2764 » 12 cze 2010, o 17:46

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ę

Afish
Moderator
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

Post autor: Afish » 12 cze 2010, o 18:36

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:

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
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
Ostatnio zmieniony 12 cze 2010, o 18:42 przez Afish, łącznie zmieniany 1 raz.

Awatar użytkownika
Inkwizytor
Użytkownik
Użytkownik
Posty: 4105
Rejestracja: 16 maja 2009, o 15:08
Płeć: Mężczyzna
Lokalizacja: Poznań
Podziękował: 1 raz
Pomógł: 427 razy

[Excel] liczby pierwsze

Post autor: Inkwizytor » 12 cze 2010, o 18:42

"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

abc666

[Excel] liczby pierwsze

Post autor: abc666 » 12 cze 2010, o 23:17

Można też zrobić tabelkę 2500x2500 i wklepać jeżeli z mod() i potem zliczyć zera DD jak nie ma to liczba jest pierwsza

ODPOWIEDZ