private Map<Integer,Integer> primeFactors(int number)
	{
		Map<Integer,Integer> primeFactors = new HashMap<Integer, Integer>();
		int factor;
		int maxFactor;
		int count;
		
		if(number % 2 == 0)
		{
			count = 1;
			number = number / 2;
			while(number %2 == 0)
			{
				count ++;
				number = number / 2;
			}
			primeFactors.put(2, count);
		}
		factor = 3; 
		maxFactor = (int)Math.round(Math.sqrt(number));
		while(number > 1 && factor <= maxFactor)
		{
			if(number % factor == 0)
			{
				count = 1;
				number = number / factor;
				while(number % factor == 0)
				{
					count ++ ;
					number = number / factor;
				}
				primeFactors.put(factor,count);
				maxFactor = (int)Math.round(Math.sqrt(number));
			}
			factor = factor + 2;
		}
		
		//special case: number is a prime! 
		if(number != 1)
		{
			primeFactors.put(number, 1);
		}
		
		return primeFactors;
	}