Oppgave 1
BitSet A = new BitSet(); A.set(1,11); System.out.println("A = " + A);
Oppgave 2
BitSet A = new BitSet(); A.set(1,4); A.set(5); A.set(7,10); System.out.println("A = " + A);
eller
BitSet A = new BitSet(); A.set(1,10); A.set(4,false); A.set(6,false); System.out.println("A = " + A);
Oppgave 3
BitSet A = new BitSet(); for (int i = 1; i <= 1024; i *= 2) A.set(i); System.out.println("A = " + A);
Oppgave 4
BitSet A = new BitSet(1025); for (int i = 1; i <= 1024; i *= 2) A.set(i); System.out.println("A = " + A);
Oppgave 5
Minste felles multiplum for 6 og 9 er 18. Dvs. at et tall er delelig med både 6 og 9 hvis og bare hvis det er delelig med 18. Snittet av A og B innholder tallene som er delelige med både 6 og 9 og det er 18, 36, 54, 72 og 90. Koden nedenfor gir det samme svaret:
BitSet A = new BitSet(100); for (int i = 6; i < 100; i += 6) A.set(i); System.out.println(A); BitSet B = new BitSet(100); for (int i = 9; i < 100; i += 9) B.set(i); System.out.println(B); A.and(B); System.out.println(A);
Oppgave 6
Minste felles multiplum for 6 og 8 er 24. Dvs. at et tall er delelig med både 6 og 8 hvis og bare hvis det er delelig med 24. Snittet av A og B innholder tallene som er delelige med både 6 og 8 og det er 24, 48, 72 og 96. Koden nedenfor gir det samme svaret:
BitSet A = new BitSet(100); for (int i = 6; i < 100; i += 6) A.set(i); System.out.println(A); BitSet B = new BitSet(100); for (int i = 8; i < 100; i += 8) B.set(i); System.out.println(B); A.and(B); System.out.println(A);
Oppgave 7
Bruk koden fra Oppgave 5 med or istedenfor and.
Oppgave 8
Bruk koden fra Oppgave 6 med or istedenfor and.
Oppgave 9
Bruk koden fra Oppgave 5 med andNot istedenfor and.
Oppgave 10
Bruk koden fra Oppgave 6 med andNot istedenfor and.
Oppgave 11
Minste felles multiplum for 6, 8 og 9 er 72. Dermed er det kun 72 blant tallene mindre enn 100 som er delelige med både 6, 8 og 9. Flg. kode gir samme svar:
BitSet A = new BitSet(100); for (int i = 6; i < 100; i += 6) A.set(i); System.out.println(A); BitSet B = new BitSet(100); for (int i = 8; i < 100; i += 8) B.set(i); System.out.println(B); BitSet C = new BitSet(100); for (int i = 9; i < 100; i += 9) C.set(i); System.out.println(C); A.and(B); A.and(C); System.out.println(A);
Oppgave 12
Bruk koden fra Oppgave 5 med xor istedenfor and.
Oppgave 13
BitSet A = new BitSet(100); for (int i = 6; i < 100; i += 6) A.set(i); System.out.println("A = " + A); BitSet B = new BitSet(100); for (int i = 9; i < 100; i += 9) B.set(i); System.out.println("B = " + B); int a = A.cardinality(); int b = B.cardinality(); BitSet C = (BitSet)A.clone(); // C er lik A A.or(B); // A = A union B System.out.println("A union B = " + A); int u = A.cardinality(); // antallet i A union B C.and(B); // C = A snitt B int s = C.cardinality(); // antallet i A snitt B System.out.println("A snitt B = " + C); System.out.println(u + " = " + a + " + " + b + " - " + s);
Oppgave 14
BitSet A = new BitSet(1000); for (int i = 2; i < 1000; i++) A.set(i); int[] a = {2,3,5,7,11,13,17,19,23,29,31}; for(int i = 0; i < a.length; i++) { int k = a[i]; for (int j = 2*k; j < 1000; j += k) A.clear(j); } System.out.println(A);