Strona 1 z 1

[C++] Liczby pierwsze

: 30 gru 2012, o 20:07
autor: kejkun7
wzorując się na tym kodzie

Kod: Zaznacz cały

  #include <iostream>

using namespace std;

int main()
{
    int a,b,r;

    cin >> a >> b;

    while(b!=0)
    {
        r = a % b;
        a = b;
        b = r;
    }

    cout << a << endl;

    return 0;
} 

napisać kod Sprawdzania, czy dane dwie liczby naturalne są względnie pierwsze.


pomysł mam, więc go opiszę, ale nie mam pojęcia jak napisać kod ;/.

sprawdzić
1 ) czy \(\displaystyle{ a, b}\) są jedną z liczb : \(\displaystyle{ 2, 3, 5, 7.}\)
jeśli nie : ( odpowiednio\(\displaystyle{ a , b}\)idą dalej w kodzie, a jeśli np. \(\displaystyle{ a = 2}\) . to "\(\displaystyle{ a}\)" nie idzie dalej w kodzie. ) :
2) czy \(\displaystyle{ a , b}\) są podzielne przez \(\displaystyle{ 2,3,5,7,9 ?}\)
jeśli nie, są to liczby pierwsze.
wypisz \(\displaystyle{ a}\) i " tak " jeśli jest pierwsza, jeśli nie, wypisz \(\displaystyle{ a}\) i " nie "
i " \(\displaystyle{ b}\)" i " tak " jeśli jest pierwsza, jeśli nie, wypisz\(\displaystyle{ b}\) i " nie "

[C++] Liczby pierwsze

: 30 gru 2012, o 20:14
autor: lightinside
A próbowałeś z if lub swith i casem? z czym masz dokładnie problem?

[C++] Liczby pierwsze

: 30 gru 2012, o 20:19
autor: kejkun7
nie znam " swith i casem"
if znam

czyli np. tak ":

Kod: Zaznacz cały

 if ( a = 2 , or a = 3 , or a =4  ... ) 


 
czy inaczej się sprawdza ?????
i jak sie sprawdza podzielność przez \(\displaystyle{ 2}\)
np. ??

[C++] Liczby pierwsze

: 30 gru 2012, o 20:23
autor: Ser Cubus
kejkun7 pisze:nie znam " swith i casem"
if znam

czyli np. tak ":

Kod: Zaznacz cały

 if ( a = 2 , or a = 3 , or a =4  ... ) 


 
czy inaczej się sprawdza ?????
i jak sie sprawdza podzielność przez \(\displaystyle{ 2}\)
np. ??
źle

= to operator przypisania
== to operator porównania


poprawiony Twój kod:

Kod: Zaznacz cały

 if ( a == 2  or a == 3  or a == 4  ... )  
jak sprawdzić podzielność przez jakąś liczbę? operatorem modulo, symbol %

if( x % 2 == 0) cout << "liczba podzielna przez 2"

inaczej mówiąc, czy reszta z dzielenia x przez 2 = 0?

[C++] Liczby pierwsze

: 30 gru 2012, o 20:29
autor: kejkun7
czyli coś takiego a propos samego \(\displaystyle{ a}\)


Kod: Zaznacz cały

   if ( a == 2  or a == 3  or a ==5 or a==7 )  

cout << " liczba " , a , "  jest pierwsza"<< endl;
else
if( a % 2 == 0) cout << " liczba " , a , " nie jest pierwsza"
else
if( a % 3 == 0) cout << " liczba " , a , " nie jest pierwsza"
else
if( a % 5 == 0) cout << " liczba " , a , " nie jest pierwsza"
else
if( a % 7 == 0) cout << " liczba " , a , " nie jest pierwsza"
else
if( a % 9 == 0) cout << " liczba " , a , " nie jest pierwsza"
else
cout << " liczba " , a , "  jest pierwsza"

??
jednak pomysł jest zły, ale kod przynajmniej dobrze napisany ?

[C++] Liczby pierwsze

: 30 gru 2012, o 20:43
autor: Ser Cubus
co to za przecinki?

zamiast przecinków wstaw: <<
i nie zapomnij po każdej instrukcji postawić średnika: ;

co do pomysłu, owszem pomysł jest zły, bo np 11 też jest liczbą pierwsza

wskazówka:
trzeba by dzielić x przez liczbę inkrementowaną w pętli

[C++] Liczby pierwsze

: 30 gru 2012, o 20:52
autor: m-2
Ludzie, czy wy w ogóle przeczytaliście pierwszy post?

Liczby \(\displaystyle{ a,b}\) są względnie pierwsze wtedy i tylko wtedy, gdy \(\displaystyle{ NWD(a,b)=1}\).

Kod, który wstawiłeś oblicza \(\displaystyle{ NWD}\) dwóch liczb.

Wystarczy sprawdzić, czy \(\displaystyle{ a}\) (czyli \(\displaystyle{ NWD}\) wejściowych liczb po wyjściu z pętli) jest równe 1.

[C++] Liczby pierwsze

: 30 gru 2012, o 21:18
autor: kejkun7
no ale to zbyt banalne zadanie
jednak zmieniłem na liczenie liczb pierwszych
pozdrawiam ;]