Я предполагаю, что это домашнее задание. Ответ 2 * 4999 (9998), осмотр.
Техника грубой силы очевидна (должна быть). Возьмите список всех простых чисел x, таких, что 0 <= x <= 5000 (так как вы ищете здесь факторы, вы будете умножать числа ... и так как наименьшее простое число равно 2, вам не нужно беспокоиться ни о чем больше 5000). для каждого элемента в списке, повторите итерацию по списку снова, изучая каждый y в списке. Умножьте их вместе и запишите дельту между продуктом и 10000. Оставьте наименьшее значение. </p>
Другой способ сделать это - начать с 10000 и вычислить его основные факторы (если есть).
http://mathworld.wolfram.com/PrimeFactorization.html
http://mathworld.wolfram.com/PrimeFactorizationAlgorithms.html
Например:
int i = 10000 ;
int[] primeFactors = null ;
while ( i > 0 && ( primeFactors == null || primeFactors.Length == 0 ) )
{
primeFactors = ComputePrimeFactorsOf( i ) ;
}
// if primeFactors is contains data, there's your solution