NumbersBitSetFactorizationProvider.java :  » Math » algebra » ru » susu » algebra » ranks » Java Open Source

Java Open Source » Math » algebra 
algebra » ru » susu » algebra » ranks » NumbersBitSetFactorizationProvider.java
package ru.susu.algebra.ranks;

import java.math.BigInteger;
import java.util.BitSet;
import java.util.HashMap;
import java.util.Map;

import ru.susu.algebra.number.MapPrimeNumbersProvider;
import ru.susu.algebra.operation.IOperation;
import ru.susu.algebra.pair.Pair;
import ru.susu.algebra.util.NumberUtilities;

/**
 *            2 {@link BitSet}.
 *     [1..number]     .
 *
 * @author akargapolov
 * @since: 03.05.2010
 */
public class NumbersBitSetFactorizationProvider implements IOperation<Map<Integer, BitSet>>
{

  /**
   * @param sources - sources[0]  ,   [1..number]
   * @return  ->   
   */
  @Override
  public Map<Integer, BitSet> performOperation(Object... sources)
  {
    Map<Integer, Integer> primes = new MapPrimeNumbersProvider().performOperation(sources);
    Integer number = (Integer) sources[0];
    Map<Integer, BitSet> result = new HashMap<Integer, BitSet>();
    for (int num = 1; num <= number; num++)
    {
      BitSet bitset = new BitSet(primes.size());
      for (Pair<Integer, Integer> pair : NumberUtilities.factorization(BigInteger.valueOf(num)))
      {
        if (pair.getValue() % 2 == 0)
          continue;

        bitset.set(primes.get(pair.getKey()), true);
      }
      result.put(num, bitset);
    }
    return result;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.