public static long[] listOfPrimeNumbers(long m) {
		long[] numbers = getRangeOfOddNumbers(2, (int) m);
		int[] primeMarker = new int[numbers.length];
		Arrays.fill(primeMarker, 2);
		long square;
		int index;
		for (int i=0; i<numbers.length; i++) {
			if (primeMarker[i] == 2) {
				primeMarker[i] = 1;
				square = (long) Math.pow(numbers[i], 2);
				index = Arrays.binarySearch(numbers, square);
				if (index > 0) {
					primeMarker[index] = 0;
				} else {
					index = i;
				}
				for (int y=index+1; y<numbers.length; y++) {
					if (numbers[y] % numbers[i] == 0) {
						primeMarker[y] = 0;
					}
				}
			}
		}
		
		return filterOutPrimes(numbers, primeMarker, m);
	}