Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

liczby pierwsze

Ostatnio zmodyfikowano 2011-12-20 14:09
Autor Wiadomość
ptaq
Temat założony przez niniejszego użytkownika
» 2011-12-20 11:21:15
domyślam się ze dostrzegasz błąd w tym algorytmie =], więc prosze nie znęcaj sie :D tylko podaj jakąś czytelniejsza wskazówke ;p
P-45925
pekfos
» 2011-12-20 12:27:20
1. Twój program nie spełnia wymagań postawionych w zadaniu.
2. Jeśli myślisz, że tworzenie programów to tylko pisanie kodu, to się mylisz -.- Napisz testy, sformatuj wyjście, itp. bo same dobre wyniki nie wystarczą bi ci zaliczyli.
P-45926
ison
» 2011-12-20 12:50:29
to normalne że dostajesz błędną odpowiedź jak nie stosujesz się do tego co jest napisane w zadaniu ;) czytanie ze zrozumieniem jest dosyć ważną umiejętnością przy rozwiązywaniu tego typu zadań. Co więcej w tym temacie już zostało dokładnie napisane co masz źle, przeczytaj jeszcze raz wszystkie posty :)
P-45930
ptaq
Temat założony przez niniejszego użytkownika
» 2011-12-20 13:06:57
hmmm teraz juz chyba spełnia wszystkie warunki??? i dalej nic
C/C++
#include <iostream>
#include <cmath>

bool sprawdz( int a, float p )
{
    int d = 3;
    if( a == 1 || a % 2 == 0 )
         return false;
   
    do
    {
        if( a % d == 0 )
       
             return false;
       
        d += 2;
    }
    while( d < p );
   
    return true;
   
}

int main()

{
    unsigned long n;
    unsigned int y;
    float p;
    do
    {
        std::cin >> n;
    }
    while( n >= 100000 );
   
    unsigned long int a[ n ];
    unsigned long int i = 0;
   
   
    do
    {
        std::cin >> a[ i ];
        if( a[ i ] >= 1 && a[ i ] <= 10000 )
             i++;
       
    } while( i < n );
   
    i = 0;
    do
    {
       
        y = a[ i ];
        p = sqrt( y );
       
        if( y == 2 || y == 3 )
        {
            std::cout << "TAK" << std::endl;
        }
       
        else if( sprawdz( y, p ) == true )
        {
            std::cout << "TAK" << std::endl;
        }
        else if( sprawdz( y, p ) == false )
        {
            std::cout << "NIE" << std::endl;
        }
        i++;
    } while( i < n );
   
    return 0;
   
}
P-45932
szyx_yankez
» 2011-12-20 13:13:53
To jest najprostsze zadanie. Ty za bardzo kombinujesz :D
Obczaj ten kod, przeanalizuj i postaraj się zrozumieć, nie kopiuj bezmyślnie:D
C/C++
#include <iostream>

bool IsFirst( int n )
{
    if( n == 1 ) return false;
   
    for( int i = 2; i * i <= n; ++i )
    {
        if( n % i == 0 ) return false;
       
    }
    return true;
}

int main()
{
    int Num, a;
    std::cin >> Num;
   
    for( int i = 0; i < Num; ++i )
    {
        std::cin >> a;
        if( IsFirst( a ) )
        {
            std::cout << "TAK" << std::endl;
        } else std::cout << "NIE" << std::endl;
       
    }
    return 0;
}
P-45933
malan
» 2011-12-20 13:20:12
@szyx_yankez:
C/C++
for( int i = 0; i < Num; ++i )
{
    std::cin >> a;
    if( IsFirst( a ) )
    {
        std::cout << "TAK" << std::endl;
    } else std::cout << "NIE" << std::endl;
   
}

/edit: wyprzedziłeś mnie :P
P-45934
ison
» 2011-12-20 13:21:05
@ptaq, zakresu liczb nie musisz sprawdzać, to jest tylko informacja dla Ciebie na jakiego rzędu wielkości liczby musi być Twój program przygotowany
P-45935
ptaq
Temat założony przez niniejszego użytkownika
» 2011-12-20 14:09:45
poszło :D niepotrzebny był ten pierwiastek ;p , ale ja tego z palca nie wyssałem bo : "jeśli liczba naturalna N większa od 1 nie jest podzielna przez żadną z liczb pierwszych nie większych od pierwiastka z N, to N jest liczbą pierwszą" . Chyba ze ja to źle interpretuje . Tak czy inaczej dziekuje za pomoc !!

C/C++
#include <iostream>
#include <cmath>

bool sprawdz( int a )
{
    int d = 3;
    if( a == 1 || a % 2 == 0 )
         return false;
   
    do
    {
        if( a % d == 0 )
       
             return false;
       
        d += 2;
    }
    while( d < a );
   
    return true;
   
}

int main()

{
    unsigned long n;
    unsigned int y;
    float p;
   
    std::cin >> n;
   
    unsigned long int a[ n ];
    unsigned long int i = 0;
   
   
    do
    {
        std::cin >> a[ i ];
       
       
       
       
       
        y = a[ i ];
       
       
        if( y == 2 || y == 3 )
        {
            std::cout << "TAK" << std::endl;
        }
       
        else if( sprawdz( y ) )
        {
            std::cout << "TAK" << std::endl;
        }
        else
        {
            std::cout << "NIE" << std::endl;
        }
       
        i++;
    } while( i < n );
   
    return 0;
   
}
P-45939
1 « 2 »
Poprzednia strona Strona 2 z 2