University stuff.
Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

Sequential.java 821B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import java.util.ArrayList;
  2. class Sequential implements Solver {
  3. public void solve(Sieve sieve) {
  4. sieve.generatePrimes();
  5. }
  6. public long[] factor(Sieve sieve, long num) {
  7. if (num < sieve.maxNum && sieve.isPrime((int)num))
  8. return new long[] { num };
  9. int sqrt = (int)Math.sqrt(num);
  10. ArrayList<Long> arr = new ArrayList<>();
  11. while (true) {
  12. long prime;
  13. for (prime = 2; prime <= sqrt; ++prime) {
  14. if (num % prime == 0) {
  15. arr.add(new Long(prime));
  16. num /= prime;
  17. break;
  18. }
  19. }
  20. if (prime > sqrt) {
  21. arr.add(new Long(num));
  22. break;
  23. }
  24. if (num <= sqrt && sieve.isPrime((int)num)) {
  25. if (num != 1)
  26. arr.add(new Long(num));
  27. break;
  28. }
  29. }
  30. long[] a = new long[arr.size()];
  31. for (int i = 0; i < a.length; ++i) {
  32. a[i] = arr.get(i);
  33. }
  34. return a;
  35. }
  36. }