--- euklid.c -------------------------------------
#include
#include
/** Realizacja alg. Euklidesa:
zwraca NWD dla n i m dodatnich
*/
int euklid( int n, int m ) {
int r= n % m; /* r < m */
#ifdef DEBUG
printf( "n=%3i m= %3i r=%3i\n", n, m, r );
#endif
while( r > 0 ) {
n= m;
m= r;
r= n % m;
#ifdef DEBUG
printf( "n=%3i m= %3i r=%3i\n", n, m, r );
#endif
}
return m;
}
/* Test euklid */
main( int argc, char * argv[] ) {
int n= argc > 1 ? atoi( argv[1] ) : 83;
int m= argc > 2 ? atoi( argv[2] ) : 43;
printf( "NWD(%i,%i)=%i\n", n, m, euklid( n, m ) );
return 0;
}
--------------------------------------------------
--- div.c ----------------------------------------
#include
#include
/** intdiv: dzielenie calkowite n / m
reszta wstawiana jest do *r
*/
int intdiv( int n, int m, int *r ) {
int d= 0;
*r= n;
while( *r >= m ) {
d++;
(*r) -= m;
}
return d;
}
/* Test intdiv */
main( int argc, char * argv[] ) {
int n= argc > 1 ? atoi( argv[1] ) : 5;
int m= argc > 2 ? atoi( argv[2] ) : 2;
int r;
int d= intdiv( n, m, &r );
printf( "%i/%i=%i r. %i\n", n, m, d, r );
return 0;
}
--------------------------------------------------
--- sito.c ---------------------------------------
#include
#include
#define MAXLINE 50
/** Sito Eratostenesa: wybiera l. pierwsze z zakresu 1..n
s[n]: tablica robocza
*/
void sito( int n, int s[] ) {
int i, j;
for( i= 0; i < n; i++ )
s[i]= 1;
for( i= 2; i < n; i++ )
if( s[i-1] )
for( j=i; j*i <= n; j++ )
s[i*j-1]= 0;
}
/* Test sito */
main( int argc, char * argv[] ) {
int n= argc > 1 ? atoi( argv[1] ) : 1000;
int *s= malloc( sizeof( int ) * n );
if( s == NULL ) {
fprintf( stderr, "Not enough memory for n=%i\n", n );
return 1;
} else {
int i;
int nchars= 0;
sito( n, s );
#ifdef DEBUG
/* Kontrolny wydruk tablicy s */
for( i= 0; i < n; i++ )
printf( "%i ", s[i] );
printf( "\n" );
#endif
printf( "Liczby pierwsze <= %i:\n", n );
for( i= 0; i < n; i++ )
if( s[i] ) {
nchars += printf( "%6i ", i+1 );
if( nchars >= MAXLINE ) {
printf( "\n" );
nchars= 0;
}
}
}
return 0;
}
--------------------------------------------------
--- pier.c ---------------------------------------
#include
#include
/** pierwsza: sprawdza, czy n jest l. pierwsza
*/
int pierwsza( int n ) {
int i= 2;
for( ; i*i < n; i++ )
if( n % i == 0 )
return 0; /* n dzieli sie przez i - nie jest pierwsza */
return 1; /* sprawdzilismy wszystkie liczby <2,sqrt(n)>
n jest l. pierwsza */
}
/* Test pierwsza */
main( int argc, char **argv ) {
if( argc > 0 )
while( --argc ) {
++argv;
printf( "%s %s liczba pierwsza\n", *argv, pierwsza( atoi( *argv ) ) ? "jest" : "nie jest" );
}
return 0;
}
--------------------------------------------------
Wyszukiwarka
Podobne podstrony:
Algorytmy I Struktury Danych (Wyklady) info
Algorytmy i struktury danych Wyklad 4
Algorytmy i struktury danych Wyklad 3
Algorytmy i struktury danych Prosty program Simulated Annealing
Algorytmy i struktury danych (wykłady)
Algorytmy i struktury danych Wyklad 1
Algorytmy i struktury danych Wyklad 2
notatek pl W,matematyka,Algorytmy i Struktury Danych
Algorytmy i struktury danych all
Algorytmy i struktury danych rot
Algorytmy i struktury danych 04 Listy
Algorytmy i Struktury Danych
Algorytmy i struktury danych 02 Rekurencja i złożoność obliczeniowa
więcej podobnych podstron