1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- import java.util.ArrayList;
-
- class Sequential implements Solver {
- public void solve(Sieve sieve) {
- sieve.generatePrimes();
- }
-
- public long[] factor(Sieve sieve, long num) {
- if (num < sieve.maxNum && sieve.isPrime((int)num))
- return new long[] { num };
-
- int sqrt = (int)Math.sqrt(num);
-
- ArrayList<Long> arr = new ArrayList<>();
-
- while (true) {
- long prime;
- for (prime = 2; prime <= sqrt; ++prime) {
- if (num % prime == 0) {
- arr.add(new Long(prime));
- num /= prime;
- break;
- }
- }
-
- if (prime > sqrt) {
- arr.add(new Long(num));
- break;
- }
-
- if (num <= sqrt && sieve.isPrime((int)num)) {
- if (num != 1)
- arr.add(new Long(num));
- break;
- }
- }
-
- long[] a = new long[arr.size()];
- for (int i = 0; i < a.length; ++i) {
- a[i] = arr.get(i);
- }
- return a;
- }
- }
|