Liczby Pierwsze

Użytkowanie arkusza kalkulacyjnego

Liczby Pierwsze

Postprzez zaczytana124 » N mar 10, 2019 4:37 pm

Witam
Mam plik w którym jest 15 tyś liczb. Muszę sprawdzić ile z nich jest liczbami pierwszymi. Jaką funkcją mogę to zrobić?
Open Office 4.1.4 Windows 10
zaczytana124
 
Posty: 3
Dołączył(a): N mar 10, 2019 4:34 pm

Re: Liczby Pierwsze

Postprzez Jan_J » Pn mar 11, 2019 11:04 pm

1. Czy to są liczby kolejne?
2. Jaka jest największa z tych liczb?
3. Jeśli niezbyt wielka, użyj sita Eratostenesa. Jest to znacznie bardziej efektywne, niż sprawdzanie wszystkich liczb po kolei.
4. W arkuszu nie ma gotowej funkcji na sprawdzenie czy liczba jest pierwsza.
5. Zadanie nie nadaje się dla Calca (ani Excela, ani podobnych zabawek) w przypadku naprawdę dużych liczb (ponad 15 cyfr w systemie dziesiętnym), bo arkusze kalkulacyjne nie operują na danych całkowitoliczbowych, tylko na zmiennopozycyjnych.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3845
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Liczby Pierwsze

Postprzez zaczytana124 » Pn mar 11, 2019 11:07 pm

Kolejność jest losowa. Najwieksza to 9875
Open Office 4.1.4 Windows 10
zaczytana124
 
Posty: 3
Dołączył(a): N mar 10, 2019 4:34 pm

Re: Liczby Pierwsze

Postprzez Jan_J » Pn mar 11, 2019 11:23 pm

Czyli małe.
Najprościej zbuduj sito Eratostenesa dla n = 10000 i zobacz, czy Twoje liczby zostały przesiane, czy zatrzymane.

Punkt startu: np. http://www.math.edu.pl/sito-eratostenesa
Czy to wystarczy, zależy od celu: czy masz po prostu wykonać pracę by otrzymać wynik, czy raczej opanować zasadę jej przeprowadzenia. W tym drugim przypadku trzeba by zrozumieć, co jest napisane we wstępie i zrealizować te obliczenia samodzielnie.

Jeżeli mas 15 tys. liczb, a największa nie przekracza 10000, to wartości powinny się powtarzać.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3845
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław

Re: Liczby Pierwsze

Postprzez zaczytana124 » Pn mar 11, 2019 11:32 pm

Dziękuję
Open Office 4.1.4 Windows 10
zaczytana124
 
Posty: 3
Dołączył(a): N mar 10, 2019 4:34 pm

Re: Liczby Pierwsze

Postprzez Rafkus » Wt mar 12, 2019 7:34 pm

a może tak stworzyć własną funkcję ??
na temat ich tworzenia można poczytać tu: https://help.libreoffice.org/Calc/User-Defined_Functions/pl

a to moja funkcja sprawdzająca czy dana liczba jest pierwszą:
Kod: Zaznacz cały   Rozszerz widokZwiń widok
function PIERWSZA(liczba As Variant)As boolean
dim i, k, max As Variant
liczba= abs(liczba)      'wartość bezwzględna
if liczba < 2 then
  PIERWSZA = false
else
  PIERWSZA = true
  if liczba = 2 then Exit Function
  max = fix(sqr(liczba))         'część całkowita z pierwiastka liczby 
  for i=1 to max step 2
    if i=1 then k=2 else k=i
    if liczba - fix(liczba/k)*k = 0 then PIERWSZA = false 
    if PIERWSZA = false then  Exit For
  next i
end if
End function

funkcja zwraca wartość true lub false
--------
Edytowałem kod, obecnie sprawdza również liczby ujemne,
w pętli FOR...TO...(STEP).... dodałem krok = 2 ; jeśli liczba nie dzieli się przez 2 to nie ma sensu sprawdzać czy dzieli się przez 4(2*2), 6(2*3),...,10(2*5)... itd
Ostatnio edytowano Śr mar 13, 2019 1:21 pm przez Rafkus, łącznie edytowano 3 razy
OpenOffice 4.1.5. Widows 10
Rafkus
 
Posty: 22
Dołączył(a): Cz kwi 12, 2018 10:26 pm

Re: Liczby Pierwsze

Postprzez Jan_J » Wt mar 12, 2019 10:11 pm

Oczywiście,
ale i tak lepszą praktyką jest realizacja sita Eratostenesa niż pojedynczego naiwnego testu pierwszości, stosowanego osobno dla każdej liczby.
Ciekawym, i nietrudnym zadaniem jest zbudowanie sita za pomocą formuł arkusza.
Makro jest nawet prostsze (nie biorąc pod uwagę konieczności opanowania języka), bo dostępne są adekwatne struktury sterujące, które przy użyciu formuł trzeba zastępować protezami.
JJ
LO (6.1|6.2) ∙ AOO 4.1.6 ∙ Python (3.7|2.7) ∙ Unicode 11 ∙ LATEX 2ε ∙ XML ∙ Unix tools ∙ Linux (Fedora|CentOS|SUSE)
Jan_J
 
Posty: 3845
Dołączył(a): Pt maja 22, 2009 1:20 pm
Lokalizacja: Wrocław


Powrót do Calc

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości