szukanie zaawansowane
 [ Posty: 12 ] 
Autor Wiadomość
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:11 
Użytkownik

Posty: 118
Witam
Szukam funkcji dajacej kilka poczatkowych liczb pierwszych.
Interesuje mnie przynajmniej 10.
Przegladajac internet znalezlem odpowiednie funkcje z tym ze generowaly liczby dosc duze, mi chodzi o to zeby szlo od 2.

Pozdrawiam i przepraszam za brak polskich znakow ale nie mam.
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:14 
Gość Specjalny
Avatar użytkownika

Posty: 6500
Lokalizacja: Kraków
może coś takiego?:
p=2n^2+7
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:17 
Użytkownik
Avatar użytkownika

Posty: 1599
Lokalizacja: Łódź
ares41 n do jakiego zbioru należą?
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:21 
Użytkownik

Posty: 118
ares41 napisał(a):
może coś takiego?:
p=2n^2+7


Dzieki za bardzo szybka odpowiedz, ale co podstawiac za n ?
Jezeli liczby naturalne to nie dziala :)
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:27 
Gość Specjalny
Avatar użytkownika

Posty: 6500
Lokalizacja: Kraków
Istnieje hipoteza, że dla nieskończenie wielu liczb n \in \mathbb N liczba 2n^2+7 jest pierwsza.
Oczywiście nie działa to dla wszystkich liczb naturalnych
pozdrawiam :)
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:38 
Użytkownik
Avatar użytkownika

Posty: 1599
Lokalizacja: Łódź
ostryo napisał(a):
Przegladajac internet znalezlem odpowiednie funkcje z tym ze generowaly liczby dosc duze, mi chodzi o to zeby szlo od 2.

Jakie np funkcję znalazłeś?
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 14:52 
Użytkownik

Posty: 118
Znalazlem
2n^2+29
n^2-n+41 (Euler)
Pierwsza daje 28 liczb pierwszych, druga 40.
I kilka innych bardziej skomplikowanych.
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 15:24 
Użytkownik
Avatar użytkownika

Posty: 1599
Lokalizacja: Łódź
Czyli potrzebny czy jakiś "ładny" ciąg dający liczby pierwsze.

Jedyne co przychodzi mi do głowy to wyznaczenie wielomianu przechodzącego przez kolejne liczby pierwsze ((1,2),(2,3)(3,5),\ldots). Jeżeli byłoby ich dziesięć to chyba wielomian miałby 10 stopień czyli nie za elegancko.

PS: Jeżeli chodzi o wyznaczanie małych liczb pierwszych to myślę, że najprościej użyć sita Eratostenesa ale tobie raczej chodzi o krótki wzorek funkcji.
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 15:26 
Gość Specjalny
Avatar użytkownika

Posty: 6500
Lokalizacja: Kraków
można też pokusić się o napisanie programu, który wyznaczy liczby pierwsze z podanego przedziału. :)

jeżeli znasz język C++, nie powinno to stanowić większego problemu.

pozdrawiam
ares41
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 15:42 
Użytkownik
Avatar użytkownika

Posty: 1599
Lokalizacja: Łódź
ostryo czy jest ci to potrzebne do czegoś konkretnego czy raczej z własnej ciekawości?
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 17:02 
Użytkownik

Posty: 118
fon_nojman
Metode z wielomianem juz sprawdzalem, zrobilem aproksymacje w odpowiednim programie, ale wspolczynniki wielomianu mnie zniechecily :)
Z funkcja ogolnie z tego co sie zorientowalem bedzie problem, myslalem jeszcze nad ciagiem okreslonym rekurencyjnie, ale poki co ciagle szukam.
Potrzebne mi to do programu, niekoniecznie na komputer takze szukam mozliwie najprostszego sposobu.

ares41
Jezeli znasz jakis mozliwie prosty (duze ograniczenia sprzetowe) algorytm, ktory wyznaczy mi liczby pierwsze z danego przedzialu to podziel sie :)
Góra
Mężczyzna Offline
PostNapisane: 5 lut 2011, o 17:27 
Gość Specjalny
Avatar użytkownika

Posty: 6500
Lokalizacja: Kraków
Kod:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <iostream>
#include <math.h>

using namespace std;

void sito(int n)
{
  bool *tab = new bool[n + 1];
  for(int i = 0; i <= n; i++)
    tab[i] = true;
  int zakres = floor(sqrt((float)n));
  for(int i = 2; i <= zakres; i++){
    if(tab[i]){
      int j = i + i;
      while(j <= n){
        tab[j] = false;
        j += i;
      }
    }
  }
  for(int i = 2; i <= n; i++){
    if(tab[i])
      cout << i << " ";
  }
  delete tab;
}

int main()
{
  int n;
  cout << "Podaj zakres: ";
  cin >> n;
  cout << "Liczby pierwsze od 2 do " << n << ":" << endl;
  sito(n);
  return EXIT_SUCCESS;
}


Jeżeli coś nie będzie działało to daj znać. :)
Góra
Utwórz nowy temat Odpowiedz w temacie  [ Posty: 12 ] 


 Zobacz podobne tematy
 Tytuł tematu   Autor   Odpowiedzi 
 Funkcja zaokrąglajaca  Anonymous  3
 Surjekcja (funkcja "na")  lucky36  1
 Funkcja z parametrem...  Finarfin  2
 Jaka to funkcja?  Anonymous  1
 Nowe pojęcie - funkcja cecha  jchris  2
 
Atom [Regulamin Forum] [Instrukcja LaTeX-a] [Poradnik] [F.A.Q.] [Reklama] [Kontakt]
Copyright (C) Karpatka.pl