Exemplo n.º 1
0
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;
}
Exemplo n.º 2
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;
			}
		}
	}
}
Exemplo n.º 3
0
/*
 * 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;
}
Exemplo n.º 4
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;
}
Exemplo n.º 5
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;
}
Exemplo n.º 6
0
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;

}
Exemplo n.º 7
0
BitArray AbstractNumberModel<T>::compressNumber(unsigned int num){
    return BitArray(num);
}
Exemplo n.º 8
0
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(); }
Exemplo n.º 10
0
 const BitArray getActiveOutputChannels() const      { return outputDevice != 0 ? outputDevice->channels : BitArray(); }