Trzy pytania osoby początkującej
Ostatnio zmodyfikowano 2008-06-09 22:21
siemes Temat założony przez niniejszego użytkownika |
» 2008-06-09 16:40:16 już chyba ostatnie pytanie w tak krótkim czasie (bo stronka jest super i na pewno w wakacje przerobie sobie kurs C++), ale do rzeczy co znaczy jeśli napiszemy warunek np if(ciag[i]) to wbrew pozorom nie jest żaden warunek a jednak koleżanka wykorzystała go i działa, tu jest algorytm w którym zostało to wykorzystane do znajdowania liczb pierwszych #include<iostream.h> #include<math.h> #include <conio.h> #include<stdlib.h> using namespace std; int main() { int n, i, j, licz = 0, * ciag; cout << "podaj liczbe naturalna wieksza od 1 \n"; cin >> n; ciag = new int[ n + 1 ]; for( i = 2; i <= n; i++ ) ciag[ i ] = 1; for( i = 2; i <= n; i++ ) if( ciag[ i ] ) np TUTAJ for( j = i; j * i <= n; j++ ) ciag[ i * j ] = 0; for( i = 2; i < n; i++ ) if( ciag[ i ] ) licz = licz + 1; if( ciag[ n ] ) cout << n << "jest liczba pierwsza"; else cout << n << "nie jest liczba pierwsza\n."; cout << endl << "istnieja " << licz << "liczby pierwsze mniejsze od " << n; getch(); return( 0 ); } Prosze o pomoc A przy okazji drugie pytanie, mam ciąg liczb i mam sprawdzić czy są względnie pierwsze (NWD(x,y)=1) i napisałem program który porównuje kolejne liczby (1 z 2, 2 z 3 itd) #include<iostream.h> #include<math.h> #include<stdlib.h> #include<conio.h> #include<ctime> using namespace std; int NWD( int x, int y ); int main() { int n, i; cout << "Podaj dlugosc ciagu rowna n.\n"; cin >> n; int * ciag = new int[ n ]; srand( time( 0 ) ); for( i = 0; i < n; i++ ) { ciag[ i ] = rand() %( 100 ); cout << ciag[ i ] << endl; } for( i = 1; i < n; i++ ) { if(( NWD( ciag[ i ], ciag[ i + 1 ] ) ) == 1 ) cout << "liczba " << ciag[ i ] << " i " << ciag[ i + 1 ] << " sa wzglednie pierwsze \n "; } getch(); return( 0 ); } int NWD( int x, int y ) { int r; while( y != 0 ) { r = x % y; x = y; y = r; } return( x ); } i tu pytanie, czy da się sprawdzić czy wszystkie liczby względem siebie będą pierwsze? (po tu porównywałem poszczególne liczby) |
|
DejaVu |
» 2008-06-09 22:21:21 Ad 1. Warunek: jest równoważny warunkowi: Mówiąc prościej, zapis pierwszy i drugi oznaczają dokładnie to samo. Pierwszy zapis jest krótszą wersją zapisu drugiego. Bardzo często w programowaniu chcemy sprawdzić czy coś jest różne od zera, stąd też i standard języka C/C++ pozwala na używanie takiego krótkiego i wygodnego zapisu. Program staje się znacznie mniej czytelny dla osób, które się dopiero uczą programowania, jednak dla programistów z większym doświadczeniem krótszy zapis jest poprostu lepszy, bo mniej jest pisania :P Ad 2. int ilosc = 90; for( int i = 1; i <= ilosc; i++ ) for( int j = 1; j <= ilosc; j++ ) { NWD( i, j ); }
|
|
1 « 2 » |