[c++]pętle - liczby pierwsze

kejkun7
Użytkownik
Użytkownik
Posty: 405
Rejestracja: 24 lip 2012, o 23:16
Płeć: Mężczyzna
Lokalizacja: hmm ?
Podziękował: 147 razy
Pomógł: 2 razy

[c++]pętle - liczby pierwsze

Post autor: kejkun7 »

nie rozumiem złożoności kodu , proszę o wyjaśnienie.
pytania moje niżej

Kod: Zaznacz cały

   
#include <iostream>
 
using namespace std;
 
int main()
{
    int n,i,p,lp;
    bool t;
 
    cin >> n;
 
    lp = 0;
    p = 2;
    
    while(lp < n)
    {
        t = true;
        for(i = 2; i < p; i++)
            if(p % i == 0)
            {
                t = false;
                break;
            }
 
        if(t)
        {
            cout << p << " ";
            lp++;
        }
        p++;
    }
 
    cout << endl;
 
    return 0;
} 

1.

Kod: Zaznacz cały

   for(i = 2; i < p; i++)

i = 2 , ale p = 2
stąd 2 < 2 fałsz, zatem ta pętla powinna wykonać 0 obiegów ?????

2. przenalizujmy sytuacje dla " \(\displaystyle{ 2}\)"
\(\displaystyle{ if ( 2 % 2 = = 0}\), a tak jest)
wtedy :
t = false
break -> koniec ? i idziemy do .. ?
\(\displaystyle{ if ( t}\) rózne od false )
to

Kod: Zaznacz cały

   
cout << p << " ";
            lp++;
no tylko t jest false, a nie różne od false
zatem czemu wypisuje " \(\displaystyle{ 2}\)" :O ?
;/
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[c++]pętle - liczby pierwsze

Post autor: witekkq »

1. Tak pętla się nie wykona (warto zaopatrzyć się w kompilator z debuggerem)
2. Pętla się nie wykona więc t nie zmieni swojej wartości logicznej.;
kejkun7
Użytkownik
Użytkownik
Posty: 405
Rejestracja: 24 lip 2012, o 23:16
Płeć: Mężczyzna
Lokalizacja: hmm ?
Podziękował: 147 razy
Pomógł: 2 razy

[c++]pętle - liczby pierwsze

Post autor: kejkun7 »

w takim razie jeśli pętla się nie wykona, czemu program i tak wypiszę \(\displaystyle{ 2}\)?
debugger, pozwoli mi na poznanie stopniowych pętli ?
zakres działania tej pętli:

Kod: Zaznacz cały

 for(i = 2; i < p; i++)
mógbłbyś mi pokazać od jakiego miejsca do jakiego sięga ?
witekkq
Użytkownik
Użytkownik
Posty: 145
Rejestracja: 16 lis 2007, o 09:06
Płeć: Mężczyzna
Lokalizacja: Gniezno
Podziękował: 2 razy
Pomógł: 27 razy

[c++]pętle - liczby pierwsze

Post autor: witekkq »

Kod: Zaznacz cały

 for(i = 2; i < p; i++)
            if(p % i == 0)
            {
                t = false;
                break;
            }
ta pętla się nie wykona.

a tutaj się wyświetla

Kod: Zaznacz cały

 if(t)
        {
            cout << p << " ";
            lp++;
        }
są to niezależne kawałki kodu
kejkun7
Użytkownik
Użytkownik
Posty: 405
Rejestracja: 24 lip 2012, o 23:16
Płeć: Mężczyzna
Lokalizacja: hmm ?
Podziękował: 147 razy
Pomógł: 2 razy

[c++]pętle - liczby pierwsze

Post autor: kejkun7 »

dzięki wielkie:D
już się odnalazłem w kodzie:D
ODPOWIEDZ