public Long[] determineRoots2(Collection<Long> factors, Long a, Long b){
		Long[] roots = new Long[2];
		roots[0] = 0L;
		roots[1] = 0L;
		Long secFactor = 0L;
		boolean foundRoot = false;
		for (Long factor : factors){
			if (factor == 0L){
				secFactor = -a;
				roots[0] = factor;
				roots[1] = -a;
				foundRoot = true;
				break;
			}
			
			secFactor = b/factor;
			if (Math.abs(a) == Math.abs(secFactor + factor) || Math.abs(a) == Math.abs(factor - secFactor)){
				if (secFactor == a - factor){
					roots[0] = -factor;
					roots[1]  = -secFactor;
					foundRoot = true;
					break;
				} else {
					factor = - factor;
					secFactor = b/factor;
					if (Math.abs(a) == Math.abs(secFactor + factor) || Math.abs(a) == Math.abs(factor - secFactor)){
						if (secFactor == a - factor){
							roots[0] = -factor;
							roots[1] = -secFactor;
							foundRoot = true;
							break;
						}
					}
				}

			} 
		}
		if(foundRoot) {
			//System.out.println("y = x^2 &  y = ("+-a+")x + ("+-b+")");
			//System.out.println("x^2 +("+a+")x + ("+b+")");
			//System.out.println("Has Roots "+roots[0]+", "+roots[1]);
			return roots;
		} else {
			return null;
		}
	}