In che modo i numeri primi sono codificati nell'esempio di Knuth di adattarsi alla cache della memoria?

cs.stackexchange https://cs.stackexchange.com/questions/99433

  •  05-11-2019
  •  | 
  •  

Domanda

Qualcuno potrebbe aiutarmi a capire cosa sta succedendo qui (in un inglese semplice)? penso che $ (k mathbin { &} 63) $ ha l'effetto della divisione modulare. È giusto? Come sono codificati i numeri primi / Come posso sapere esattamente dove inizia e termina muovendo il dito attraverso ogni parola a 64 bit?

2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, ...


L'obiettivo è quello di fare] una tabella di tutti i numeri primi dispari inferiori a 1024, in modo da poter facilmente decidere la primalità di un piccolo numero intero.

  1. La densità del pacchetto finale si ottiene quando abbiamo articoli a 1 bit.
  2. Possiamo stiparli in una parola a 64 bit.
  3. Sono richiesti solo numeri a 64 bit.
  4. Per verificare se $ 2K+1 $ è primo, per $ 0 ≤ k <512 $, semplicemente calcola quanto segue in un registro a 64 bit e vedi se la parte più a sinistra è 1:

$$ p _ { lfloor k/64 rfloor} << (k mathbin { &} 63) $$

P è in formato Big-Endian. Q è in formato poco endiano.

P0 —0111011011010011001011010010011001011001010010001011011010000001, 
P1 —0100110000110010010100100110000110110000010000010110100110000100, 
P2 -1001001100101100001000000101101000000100100001101001000100100101, 
P3 -0010001010001000011000011001010010001011010000010001010001010010, 
P4 —0000110000000010010000100100110010000100100110010010110000010000, 
P5 -1101001001100000101001000100001000100001000100100101000100101000, 
P6 —1010000001000010000011000011011000010000001011010000001011010000, 
P7 -0000010100010000100010100100100000010100100100010010000010100110.

Per Little-Endian, $$ q _ { lfloor k/64 rfloor} >> (k mathbin { &} 63) $$

E guarda il pezzo più a destra del risultato.

Q0 — 1000000101101101000100101001101001100100101101001100101101101110, 
Q1 - 0010000110010110100000100000110110000110010010100100110000110010, 
Q2 - 1010010010001001011000010010000001011010000001000011010011001001, 
Q3 - 0100101000101000100000101101000100101001100001100001000101000100, 
Q4 — 0000100000110100100110010010000100110010010000100100000000110000, 
Q5 — 0001010010001010010010001000010001000010001001010000011001001011, 
Q6 — 0000101101000000101101000000100001101100001100000100001000000101, 
Q7 — 0110010100000100100010010010100000010010010100010000100010100000;

- L'arte della programmazione informatica. Volume 4, fascicolo 1. trucchi e tecniche bitwise. Diagrammi decisionali binari. p.5

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a cs.stackexchange
scroll top