Program na liczby pierwsze

Problemy dotyczące programowania.

Moderatorzy: Moderatorzy, Administratorzy

Awatar użytkownika
aleks
Użytkownik
Posty: 80
Rejestracja: 2006-04-17, 12:33

Program na liczby pierwsze

Post autor: aleks »

witam!

potrzebuje pomocy w napisaniu programu w C++ ktory wyznaczalby liczbe pierwsza albo chociaz sprawdzal czy dana liczba jest liczba pierwsza
nie wiem jak sie do tego zabrac
jest na to pewien algorytm ktory poprzez eliminacje kolejnych liczb ktore sa podzielne przez wymienione juz liczby pierwsze ale nie wiem jak to zapisac kodem?!
Bysz
Użytkownik
Posty: 84
Rejestracja: 2006-08-21, 18:26
Lokalizacja: Zduńska Wola

Re: Program na liczby pierwsze

Post autor: Bysz »

napewno dasz rade, pomysl,
nie bedziemy odrabiac zadan domowych za Ciebie
Ostatnio zmieniony 2006-11-10, 21:03 przez Bysz, łącznie zmieniany 2 razy.
[url=http://www.uptime-project.net/profile.php?uid=106957][img]http://img.uptime-project.net/img/1/106957.png[/img][/url]
Awatar użytkownika
aleks
Użytkownik
Posty: 80
Rejestracja: 2006-04-17, 12:33

Re: Program na liczby pierwsze

Post autor: aleks »

to nie jest wlasciwie zadanie domowe ze szkoly
problem z tym ze ja mam bardzo mala a wlasciwie zerowa wiadomosc na temat C++
dlatego nie wiem z czego skorzystac...
Bysz
Użytkownik
Posty: 84
Rejestracja: 2006-08-21, 18:26
Lokalizacja: Zduńska Wola

Re: Program na liczby pierwsze

Post autor: Bysz »

Za Ciebie tego nikt nie zrobi
ale moze >>>tutaj poszukaj<<<
Wiecej sie nie da pomoc
Drugim razem gooooooluj
[url=http://www.uptime-project.net/profile.php?uid=106957][img]http://img.uptime-project.net/img/1/106957.png[/img][/url]
Awatar użytkownika
aleks
Użytkownik
Posty: 80
Rejestracja: 2006-04-17, 12:33

Re: Program na liczby pierwsze

Post autor: aleks »

leee wlasnie znalazlem sorry bo zapomnialem jak sie nazywal autor tego algorytmu
dzieki
Ostatnio zmieniony 2006-11-10, 21:01 przez aleks, łącznie zmieniany 1 raz.
Awatar użytkownika
kazalot
Użytkownik
Posty: 1259
Rejestracja: 2006-04-05, 10:48

Re: Program na liczby pierwsze

Post autor: kazalot »

dlatego nie wiem z czego skorzystac...
z googli , z kursow programowania,z glowy, a potem z forum w celu pochwalenia sie ze sobie sam poradziles ;) to jest bardzo banalny program, najprostszy(w implementacji) sposob na sprawdzenie danej liczby(nieparzystej, parzystych nie masz co sprawdzac ;) ) to dzielenie jej przez wszystkie liczczby(nieparzyste) z zakresu od 3 do pierwiastka z tej liczby.
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Program na liczby pierwsze

Post autor: mina86 »

aleks pisze:ale nie wiem jak to zapisac kodem

Kod: Zaznacz cały

(defun primep (n)
  "Returns non nil if N is a prime number."
  (when (integerp n)
    (when (< n 0) (setq n (- n)))
    (cond
     ((= n 2))
     ((and (> n 1) (not (= (% n 2) 0)))
      (let ((end (truncate (sqrt n))) (i 1) nah)
        (while (and (<= (setq i (+ i 2)) end) (setq nah (= 0 (% n i)))))
        (not nah))))))

(defun primes (n)
  "Returns list of frist N primes."
  (when (and (integerp n) (> n 0))
    (let ((primes (list 2)) (num 1))
      (while (not (= 0 (setq n (1- n))))
        (while (catch 'div
                 (setq num (+ num 2))
                 (dolist (prime primes)
                   (when (= 0 (% num prime))
                     (throw 'div t)))))
        (setq primes (append primes (list num))))
      primes)))

(defun primes-<= (n)
  "Returns list of all primes less then or equal N."
  (when (and (integerp n) (> n 1))
    (let ((primes (list 2)) (num 1))
      (while (<= (setq num (+ num 2)) n)
        (if (catch 'div
              (dolist (prime primes t)
                (when (= 0 (% num prime))
                  (throw 'div nil))))
            (setq primes (append primes (list num)))))
      primes)))

(defun prime-sieve-p (n)
  "Returns non nil if N is a prime number."
  (and (integerp n)
       (or (= n 2)
           (and (> n 1)
                (not (= 0 (% n 2)))
                (= n (car (last (primes-<= n))))))))
Ostatnio zmieniony 2006-11-11, 16:04 przez mina86, łącznie zmieniany 3 razy.
Awatar użytkownika
aleks
Użytkownik
Posty: 80
Rejestracja: 2006-04-17, 12:33

Re: Program na liczby pierwsze

Post autor: aleks »

ja znalazlem taki kod ktory mi dobrze tez dziala ;]
choc dzieki za fatyge

Kod: Zaznacz cały

using namespace std;

main()
{
  const unsigned MAX_LP = 1000000; // maksymalna długość zbioru
  bool t[MAX_LP + 1];
  unsigned i,w,g;
  char s[1];

  cout << "Wyszukiwanie liczb pierwszych sitem Eratostenesa\n"
          "------------------------------------------------\n"
          "(C)2004 mgr Jerzy Walaszek       I LO w Tarnowie\n\n"
          "Podaj granice = ";
  cin >> g; cout << endl;
  if(g > MAX_LP)
    cout << "Granica zbyt wielka\n";
  else
  {
    for(i = 2; i <= g; i++) t[i] = true;
    for(i = 2; i <= g; i++)
    {
      w = i + i;
      while(w <= g)
      {
        t[w] = false; w += i;
      }
    }
    for(i = 2; i <= g; i++)
      if(t[i]) cout << setw(8) << i;
    cout << endl;
  }
  cout << "\n\nKlawisz Enter = KONIEC";
  cin.getline(s,1);	
  cin.getline(s,1);	
}
teraz potrzebuje juz tylko mam tu takie zadanie konkursowe nad ktorym moglbym sie poglowic ale nawet nie rozumiem zbytnio o jaki szyfr tu chodzi jak on ma funkcjonowac
nie mowiac juz o kodzie ;]
Napisać program kodujący i rozkodowujący teksty nad alfabetem łacińskim (26 liter) wzbogaconym o cyfry dziesiętne.
Zasada kodowania: każde kolejne 4 znaki tekstu (końcówka nie musi być 4-znakowa) traktujemy jako liczbę zapisaną w systemie pozycyjnym o podstawie 36 i zamieniamy ją na liczbę w systemie dziesiętnym. Otrzymane w wyniku zamiany liczby zapisujemy na ekranie monitora, oddzielając je pojedynczymi odstępami. Dekodowanie polega na przejściu od podanych liczb naturalnych, zapisanych w systemie dziesiętnym, do zaszyfrowanego tekstu.

Po stwierdzeniu, czy chodzi o kodowanie, czy też o rozkodowanie:
dane wprowadzamy z klawiatury, wyniki wyprowadzane mają być na ekran monitora.
Ostatnio zmieniony 2006-11-11, 23:27 przez aleks, łącznie zmieniany 1 raz.
Awatar użytkownika
Hamster
Użytkownik
Posty: 120
Rejestracja: 2005-03-17, 19:50
Lokalizacja: Wrocław
Kontakt:

Re: Program na liczby pierwsze

Post autor: Hamster »

Jak chcesz, to masz tutaj moje stare zadanie domowe, tylko, ze napisane w C. Z tego co pamiętam, to działa prawidłowo, ale chyba 2 wywala jaką nie pierwszą. Nie wiem, sprawdź, może Ci się przyda.

Kod: Zaznacz cały

#include<stdio.h>
#include<stdlib.h>
int pierwsza(int n);
int main ()
{
system("clear"); //czyszczenie ekranu
int n;
printf("\nWprowadz liczbe:\n");
scanf("%d" ,&n);
printf("%d\n", pierwsza(n));
return 0;
}
int pierwsza (int n)
{
if(n % 2)
{
int i;
for (i=2;i>1;i--)
printf("\nTo jest liczba pierwsza\n");
}
else
{
printf("\nTo nie jest liczba pierwsza\n");
return 0;
}
}
[size=84]Linux user # 391061[/size]
Awatar użytkownika
kazalot
Użytkownik
Posty: 1259
Rejestracja: 2006-04-05, 10:48

Re: Program na liczby pierwsze

Post autor: kazalot »

hamster to chyba nie zdales ;)
Awatar użytkownika
mina86
Moderator
Posty: 3343
Rejestracja: 2004-06-14, 21:58
Lokalizacja: Linux 5.x x86_64
Kontakt:

Re: Program na liczby pierwsze

Post autor: mina86 »

Kod: Zaznacz cały

template <unsigned num, unsigned i = num - 2> struct is_prime {
	static const bool value = (num % i) && is_prime<num, i-2>::value;
};

template <unsigned num> struct is_prime<num, 0> {
	static const bool value = true;
};

template <unsigned num> struct is_prime<num, 1> {
	static const bool value = true;
};

template <unsigned i> struct is_prime<0, i> {
	static const bool value = false;
};

template <unsigned i> struct is_prime<1, i> {
	static const bool value = false;
};
Zastrzegam sobie prawo nieanalizowania postów pisanych niepoprawną polszczyzną.
Post generated automatically by A.I. system code name ‘mina86’ in response to the previous one.
Awatar użytkownika
Hamster
Użytkownik
Posty: 120
Rejestracja: 2005-03-17, 19:50
Lokalizacja: Wrocław
Kontakt:

Re: Program na liczby pierwsze

Post autor: Hamster »

kazalot, A właśnie, że zdałem :P Odpaliłem ten program i działa dobrze oprócz tej dwójki, sprawdź jak nie wierzysz :P
[size=84]Linux user # 391061[/size]
Awatar użytkownika
Radek_R
Moderator
Posty: 1196
Rejestracja: 2004-06-14, 11:40
Lokalizacja: Kraków
Kontakt:

Re: Program na liczby pierwsze

Post autor: Radek_R »

Hamster, ale na moj gust to ten program sprawdza czy dana liczba jest parzysta czy tez nie, a nie czy jest liczba pierwsza...
#358274
http://www.prook.net
Awatar użytkownika
Sad Mephisto
Administrator
Posty: 2824
Rejestracja: 2004-05-22, 13:24
Lokalizacja: Zabrze
Kontakt:

Re: Program na liczby pierwsze

Post autor: Sad Mephisto »

aleks pisze:teraz potrzebuje juz tylko mam tu takie zadanie konkursowe nad ktorym moglbym sie poglowic ale nawet nie rozumiem zbytnio o jaki szyfr tu chodzi jak on ma funkcjonowac
nie mowiac juz o kodzie ;]
Napisać program kodujący i rozkodowujący teksty nad alfabetem łacińskim (26 liter) wzbogaconym o cyfry dziesiętne.
Zasada kodowania: każde kolejne 4 znaki tekstu (końcówka nie musi być 4-znakowa) traktujemy jako liczbę zapisaną w systemie pozycyjnym o podstawie 36 i zamieniamy ją na liczbę w systemie dziesiętnym. Otrzymane w wyniku zamiany liczby zapisujemy na ekranie monitora, oddzielając je pojedynczymi odstępami. Dekodowanie polega na przejściu od podanych liczb naturalnych, zapisanych w systemie dziesiętnym, do zaszyfrowanego tekstu.

Po stwierdzeniu, czy chodzi o kodowanie, czy też o rozkodowanie:
dane wprowadzamy z klawiatury, wyniki wyprowadzane mają być na ekran monitora.
Urocze... zamiast pisać programy, które robią coś pożytecznego, musisz się zajmować bzdurami. Ciekawe co to za konkurs.

Chodzi o to, że masz system trzydziestoszóstkowy. Dla uproszecznia przyjmijmy, że będzie on podobny do systemu szesnastkowego (0,1,2,...,8,9,a,b,...,e,f), tylko że zamiast poststawy 16 mamy 36 (czyli 0,1,2,...,8,9,a,b,...,x,y,z).

kodowanie to nic innego jak przeliczanie systemu trzydziestoszóstkowego na dziesiętny, czyli mając na wejściu "ola36lat", tlumaczymy na dziesietny:
o=24, l=21, a=10, 3=3, 6=6, t=29
i uwzgledniamy pozycje po rozbiciu na "ola3" i "6lat":

Kod: Zaznacz cały

ola3 = 24*10^3 + 21*10^2 + 10*10^1 + 3*10^0 = 24000 + 2100 + 100 + 3 = 26203
6lat = 6000 + 2100 + 100 + 29 = 8229
Czyli ola36lat = 26203 8229.
Dekodowanie robisz troszkę inaczej, najlepiej wygooglaj metodę konwersji systemu dziesiętnego na szesnastkowy i postępuj analogicznie - bo przeadaptowanie tego na system trzydziestoszóstkowy nie będzie problemem.
[i]Thank you for noticing this notice. Now that you've noticed this notice, you may have noticed that this notice is noticably unnoticable.
$ python -c "print int(''.join(map(lambda x: str(len(x)),'Kto z woli i myśli zapragnie Pi spisać cyfry ten zdoła.'.split())))/1e+10"[/i]
Awatar użytkownika
Radek_R
Moderator
Posty: 1196
Rejestracja: 2004-06-14, 11:40
Lokalizacja: Kraków
Kontakt:

Re: Program na liczby pierwsze

Post autor: Radek_R »

Hm, wiesz co, Sad, nawet ciekawy pomysl z tym systemem o podstawie 36. Ja bym go wprowadzil jako glowny obowiazujacy w Polsce system liczbowy. Moznaby wtedy mowic "Pozycz troche zl" albo "Mam duzo kasy" i kazdy by wiedzial dokladnie o jakiej kwocie mowa :P
Ostatnio zmieniony 2006-11-12, 17:45 przez Radek_R, łącznie zmieniany 1 raz.
#358274
http://www.prook.net
ODPOWIEDZ