|
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- class Main {
- static int nTests = 1;
-
- static Timer testFindPrimes(Solver s, int maxNum) {
- Timer[] timers = new Timer[nTests];
-
- for (int i = 0; i < nTests; ++i) {
- Timer t = timers[i] = new Timer();
-
- Sieve sieve = new Sieve(maxNum);
-
- t.start();
- s.solve(sieve);
- t.end();
- }
-
- return Timer.median(timers);
- }
-
- static Timer testFactor(Solver s, long maxNum, Sieve sieve) {
- Timer[] timers = new Timer[nTests];
-
- for (int i = 0; i < nTests; ++i) {
- Timer t = timers[i] = new Timer();
- t.start();
- long n = maxNum * maxNum;
- for (long j = n; j >= n - 100; --j) {
- long[] factors = s.factor(sieve, j);
-
- if (j > (n - 5) || j < (n - 95)) {
- if (j == n - 96)
- System.out.println(".............");
-
- System.out.println(
- Util.factors(j, factors));
- }
- }
- t.end();
- }
-
- return Timer.median(timers);
- }
-
- public static void main(String[] args) {
- if (args.length == 0) {
- System.out.println("Usage: java Main <biggest prime>");
- System.exit(1);
- }
-
- Sequential sseq = new Sequential();
- Parallel spar = new Parallel();
-
- boolean findPrimes = true;
- boolean factor = true;
-
- int maxNum = Integer.parseInt(args[0]);
- System.out.println("Max prime: "+maxNum);
-
- if (findPrimes) {
- System.out.println("\nFinding primes sequentially...");
- Timer seq = testFindPrimes(sseq, maxNum);
- System.out.println("Sequential: "+seq.prettyTime());
-
- System.out.println("\nFinding primes in parallel...");
- Timer par = testFindPrimes(spar, maxNum);
- System.out.println("Parallel: "+par.prettySpeedup(seq));
- }
-
- if (factor) {
- // We need a solved sieve
- Sieve sieve = new Sieve(maxNum);
- spar.solve(sieve);
-
- System.out.println("\nFactoring sequentially...");
- Timer seq = testFactor(sseq, maxNum, sieve);
- System.out.println("Sequential: "+seq.prettyTime());
-
- System.out.println("\nFactoring in parallel...");
- Timer par = testFactor(spar, maxNum, sieve);
- System.out.println("Parallel: "+par.prettySpeedup(seq));
- }
-
- spar.stopThreads();
- }
- }
|