int main(void) { BitArray(p,N); int counter = 0,j,i; unsigned long long pole[NUMBER_COUNT]; Eratosthenes(p); // nastavenie bitov podla prvocisel i = N; // ulozenie do pola, kvoli vypisaniu vzostupne while (counter < NUMBER_COUNT) { if (GetBit(p,i) == (unsigned long)0) { pole[counter]=i; counter++; } i--; } j = NUMBER_COUNT - 1; while (j >= 0) { printf("%llu\n",pole[j]); // vypis prvocisel j--; } return 0; }
void EncodeMessage(struct ppm *ppmFile,char* text) { BitArray(primes,MAX_LIMIT); Eratosthenes(primes); char encode[2],znak[2]; bool end=false; encode[0] = CHAR_BIT; znak[0] = CHAR_BIT; short int j=0; unsigned n=0; znak[1] = text[n]; for (unsigned long i=2;i<MAX_LIMIT;i++) { if(i>3*ppmFile->xsize*ppmFile->ysize) break; if (GetBit(primes,i)==0) { /* Pomocna premenna kde sa nastavi prislusny bit */ encode[1]=ppmFile->data[i]; //SetBit(encode,0,GetBit(znak,j)); /* SetBit ani GetBit nepouzity lebo ocakava long unsigned int* */ DU1__SET_BIT(znak,j,DU1__GET_BIT(znak,j)); /* Po zakodovani sa ulozi spat do struktury */ ppmFile->data[i]=encode[1]; j++; if (j==CHAR_BIT) { /* Nulovy znak zapisany, cyklus sa moze ukocnit */ if (end) break; j=0; znak[1]=text[++n]; if (znak[1]==0) end=true; } } } }
/* * Hlavni program s implementaci Eratostenova sita */ int main(void) { // definice a inicializace N prvkoveho pole bitu BitArray(p, N); // odmocnina z N, ktera je potreba v podmince Eratostenova sita const unsigned long SQRTN = (unsigned long) sqrt(N); // ridici promenne do cyklu unsigned long i, j; // Eratostenovo sito for (i = 2; i <= SQRTN; i++) { // vynecham vsechny bity s hodnotou 1 - nejsou prvocisla while (GetBit(p, i)) i++; // odstranim vsechny nasobky i - nejsou to prvocisla for (j = i*i; j <= N; j += i) { SetBit(p, j, 1); } } // nacteni poslednich 10 (PRV_COUNT) prvocisel unsigned long pp[PRV_COUNT]; for (i = N, j = 0; j < PRV_COUNT; i--) if (GetBit(p, i) == 0) { pp[j] = i; j++; } // vypis prvocisel (vzestupne) for (int k = PRV_COUNT-1; k >= 0; k--) printf("%lu\n", pp[k]); return 0; }
/* ==================================================================== */ int main(void) { BitArray(primes, N); Eratosthenes(primes); unsigned long last_primes[LAST_N] = { 0 }; for (size_t i = N, ii = LAST_N; --i, ii; ) { if (!GetBit(primes, i)) last_primes[--ii] = i; } for (size_t i = 0; i < LAST_N; ++i) { fprintf(stdout, "%lu\n", last_primes[i]); } return 0; }
int main(void) { int sN = sqrt(N); BitArray(pole,N); long primes[PRINT] = {0}; // pole na ulozenie prvocisel urcenych na tisk for(int i = 2; i <= sN; i++) { // "skrta" cisla az do sqrt N while(i < N && GetBit(pole,i)!=0) // preskoci uz "vyskrtane" bity i++; for(int n = i+i; n < N; n+=i) // nasobky i nastavi na '1' SetBit(pole,n,1); } long j = N-1; for(int i = PRINT-1; i >=0; i--) { // prechadza pole od N-1, prvocisla uklada do "primes" for(; (GetBit(pole,j)) != 0; j--) ; primes[i]=j; j--; } for(int i = 0; i < PRINT; i++) // tisk prvocisel printf("%lu\n", primes[i]); return EXIT_SUCCESS; }
int main ( int argc , char * argv [] ) { BitArray ( pole , N ); unsigned long i = 2; unsigned long sqrtN = sqrt(N); for ( ; i < sqrtN ; i++ ) { if ( GetBit (pole,i) == 0 ) { for ( unsigned long n = 2*i ; n < N ; n = n + i ) SetBit ( pole , n , 1 ); } } unsigned long lastprim[10]; int cnt = 0; i = N - 1; while ( cnt < 10 ) { if ( GetBit ( pole, i ) == 0 ) { lastprim[cnt++] = i; } i--; } for ( i = 10; i > 0; i-- ) { printf("%lu\n",lastprim[i-1]); } return 0; }
BitArray AbstractNumberModel<T>::compressNumber(unsigned int num){ return BitArray(num); }
int main(int argc, char *argv[]) { if (argc == 2) // ak nie je zadany chybny pocet argumentov { struct ppm *picture = ppm_read(argv[1]); // nacitanie struktury char sprava = 0,index2=0,bit; unsigned long index; int nullbyte = 0; if (picture == NULL) // ak nacitanie skoncilo s chybou FatalError("Chybne zadany subor\n"); BitArray(bitmap,LIMIT); // iniciaizacia bit. pola Eratosthenes(bitmap); // vypocet prvociselnych indexov for (index=2;index <= (LIMIT); index++) { if (GetBit(bitmap,index) == 0) // prvociselny index { bit = DU1_GET_BIT((&(picture->data)[index+1]),0); // vyber LSB z bytu DU1_SET_BIT((&sprava),index2,bit); // nastav na nasledujuci index vybrany bit if (index2 < (BYTE - 1)) // ci uz nie je zaplneny cely byte { index2++; } else if ((sprava != '\0') && (isprint(sprava))) // ak nie je znak nulovy alebo netlacitelny { printf("%c",sprava); // vytlaci 1 znak zo spravy index2 = 0; // vynulue pocet nast. bitov a znak sprava = 0; } else if (sprava == '\0') // ak je znak nulovy -> koniec spravy { printf("\n"); nullbyte = 1; break; } else // ak je znak netlacitelny -> fatal error { free(picture); FatalError("Sprava ulozena v subore: %s nie je korektna\n",argv[1]); } } } if (nullbyte == 0) { free(picture); FatalError("Sprava ulozena v subore: %s nie je korektne ukoncena\n",argv[1]); return 1; } else { free(picture); // uvolnenie alokovanej pamate return 0; } } else { FatalError("Nespravne zadane argumenty\n"); return 1; } }
const BitArray getActiveInputChannels() const { return inputDevice != 0 ? inputDevice->channels : BitArray(); }
const BitArray getActiveOutputChannels() const { return outputDevice != 0 ? outputDevice->channels : BitArray(); }