Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> liczby pierwsze
Jabol
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


temat wydzielony od: http://forum.php.pl/viewtopic.php?t=9078
Chodzi o sprawdzanie licz czy są pierwsze.

Cytat
Najprosciej (choc nie najwydajniej) sprawdzic podzielnosc liczby X przez wszystkie liczby calkowite od 2 do sqrt(X) (sqrt - pierwiastek kwadratowy). Jesli się przez ktorakolwiek z nich dzieli to nie jest to liczba pierwsza (wyjatkiem jest liczba 2, ktora jest liczba pierwsza).
Najprościej jest podzielić przez wszystkie liczy pierwsze mniejsze od sqrt(X) i większe od 2.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Jabol
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 467
Pomógł: 13
Dołączył: 22.02.2003

Ostrzeżenie: (0%)
-----


mam program w C, który generuje ustaloną liczbę liczb pierwszych.
pierwsze c
Kod
#include <stdio.h>

#include "pierwsze.h"



int dividable( const int, const int[] );



int main( int argc, char * argv[] )

{

    int nrs[ARRSIZE] = { 2, 3, NULL }, i = 1, curr = 3;



#ifdef DEBUG

    fprintf( stderr, "array address: 0x%xn", nrs );

#endif

    puts( "1: 2n2: 3" );

    while( ( curr += 2 )  && ( ( i +  1 ) < ARRSIZE ) )

    {

        if( ! dividable( curr, nrs ) )

        {

            nrs[++i] = curr;

            nrs[i+1] = NULL;

            printf( "%d: %dn", (i + 1), curr );

#ifdef DEBUG

            if( ! ( ( i - 1 ) % NOTIFY ) )

                fprintf( stderr, "found %dn", i );

#endif

        }

    }

    return 0;

}



int dividable( const int nr, const int nrs[] )

{

    int i = 0;



    do

    {

#ifdef DEBUG

        fprintf( stderr, "checking: %d %% %dn", nr, nrs[i] );

#endif

        if( ! ( nr % nrs[i] ) )

            return 1;

    } while( ( nrs[++i] != NULL ) && ( nrs[i] < ( nr / 2 ) ) );

    return 0;

}
pierwsze.h
Kod
// Delete line below if you don't want to have debugging shit on the screen

#define DEBUG 1

// How many numbers do you wanna get

#define ARRSIZE 10

// Each how many numbers do you wanna be notified ? ( ignored if debug offed )

#define NOTIFY 2
Co prawda tutaj mam łatwiej, bo korzystam z wytworzonej wcześniej tabeli liczb pierwszych. Pamiętam, że jak generowałem pierwszy milion to sżło chyba z pare godzin ( ale niedużo ).
Aha, i dziele przez wszystkie mniejsze od połowy, bo szczerze mówiąc, nie umiałem podlinkować od biblioteki math.
Go to the top of the page
+Quote Post

Posty w temacie
- Jabol   liczby pierwsze   26.12.2003, 09:53:04
- - FiDO   Re: Perl- kilka pytań.   27.12.2003, 00:24:42
- - s_w_ir   Dobra dzięki za te odpowiedzi. A czy macie rozwiąz...   27.12.2003, 21:32:53
- - DeyV   z przykrością muszę stwierdzić, że rozsądne wykona...   27.12.2003, 21:45:15
- - Cudi   Temat jest ciekawy, jedak eksperyment który opisuj...   27.12.2003, 22:50:16
- - Jabol   mam program w C, który generuje ustaloną liczbę li...   28.12.2003, 09:50:18
- - s_w_ir   Z bratem opracowaliśmy że każda liczba nie pierwsz...   28.12.2003, 21:08:36
- - FiDO   CytatZ bratem opracowaliśmy że każda liczba nie pi...   29.12.2003, 16:25:46
- - s_w_ir   No to teraz dopiero się fatalnie poczułem. widać j...   29.12.2003, 19:19:49
- - Cudi   Tak jak napisałem można skorzystać z metody sita E...   29.12.2003, 19:44:43
- - FiDO   Sa wydajne algrgorytmy na sprawdzanie (a przynajmn...   29.12.2003, 20:19:03
- - Cudi   Niom, niestety masz racje. Przepisałem algorytm z ...   29.12.2003, 20:35:10
- - milosh   Witam, Zainteresowała mnie ta dyskusja, wiec posta...   29.12.2003, 23:50:23
- - s_w_ir   To ja mam na 100% pewny kod i na 100% nie wydajny ...   30.12.2003, 11:23:48
- - FiDO   Teraz to sie nie popisales W tej metodzie (typow...   30.12.2003, 17:54:08
- - milosh   CytatWidzisz ale tu nie wykluczasz brak licz pseud...   30.12.2003, 19:53:43
- - dr_bonzo   CytatZ bratem opracowaliśmy że każda liczba nie pi...   21.05.2004, 21:47:24
- - Jabol   285311670611=11*11 niestety, nie zadziałało   21.05.2004, 22:13:46
- - PMadej   przeciez to nie sa liczby pierwsze: 39 = 3 * 13 14...   22.05.2004, 00:33:31
- - matys   Ja napisałem w C++ program, który sprawdza, czy po...   22.05.2004, 09:18:51
- - Cudi   PMadej: Nie zrozumiałeś go, idź przeczytaj jeszcze...   22.05.2004, 09:50:25
- - dr_bonzo   Cytat285311670611=11*11 niestety, nie zadziałało t...   22.05.2004, 09:52:38
- - Jabol   ale zauważ, że ta liczba którą podałem też da się ...   22.05.2004, 13:06:00
- - raf2001   Witam! Wtrące się do rozmowy (jeżeli to co powiem...   22.05.2004, 13:59:27


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 5.10.2025 - 07:06