Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Готов выложить листинги программы и саму программу (написана на Delphi), если это возможно.
UPD2: Для полноты приведу взятый из этой статьи ответ. Исходные числа — 13 и 4. Ответ единственен.
P.S. Идите в статью, там еще и сорцы есть.
Моя же программа учитывает все нюансы и дает точный результат для любых больших чисел
using System;
using System.Collections.Generic; // for HashSet
using System.Diagnostics;
using System.Linq;
class Program
{
static void Main()
{
var birthDays = Enumerable.Range(2, 4999)
.Join(
Enumerable.Range(2, 4999), n => 1, n => 1,
(n1, n2) => new {D = n1*n2, M = n1 + n2, N1 = n1, N2 = n2})
.Where(d => d.N2 >= d.N1).ToList();
var x1 = birthDays.GroupBy(d => d.D).Where(g => g.Count() == 1).SelectMany(g => g).ToList();
var monthWithUniqueDays = new HashSet<int>(x1.Select(d => d.M));
var x2 = birthDays.Where(d => !monthWithUniqueDays.Contains(d.M)).ToList();
var x3 = x2.GroupBy(d => d.D).Where(g => g.Count() == 1).SelectMany(g => g).ToList();
var solve = x3.GroupBy(d => d.M).Where(g => g.Count() == 1).SelectMany(g => g).ToList();
Console.WriteLine(string.Join(", ", solve.Select(d => d.N1 + " " + d.N2)));
}
}

<document html><head>
<script>
var MAX=5000;
var P, W, i, j, k, A, B;
var M=[], Z=[];
for (i=0; i<(MAX*MAX); i++) M[i]=0;
for (i=2; i<MAX; i++) for (j=i; j<MAX; j++) { P=i*j; M[P]++; }
for (W=4,k=0; W<(2*MAX-2); W++) {
P=0;
for (j=2; j<=W/2; j++) if (M[j*(W-j)] === 1) { P=1; break; }
if (P===0) { Z[k]=W; k++; }
}
/*Здесь k - количество уникальных сумм*/
for(i=0; i<(MAX*MAX); i++) M[i]=0;
/*Массив количеств возможных произведений*/
for(i=0; i<k; i++) for(j=2; j<=Z[i]/2; j++) M[(Z[i]-j)*j]++;
/*Вывод списка*/
for(i=0; i<k; i++) {
W=0;
for(j=2; j <= Z[i]/2; j++) if (M[(Z[i]-j)*j] === 1) {
W++; P=(Z[i]-j)*j; A=j; B=Z[i]-j;
}
if (W===1) {
document.write("A=",A,", B=",B,", Sum=",Z[i],", Mul=",P);
document.write("<br>");
//console.log("A="+A+", B="+B+", Sum="+Z[i]+", Mul="+P);
}
}
</script>
</head><body></body></html>
Добрый день. Для предела на сумму в 20 000 я получил следующие числа.
num a b sum mult
1 32 131 163 4192
2 4 181 185 724
3 4 61 65 244
4 8 239 247 1912
5 4 229 233 916
6 512 911 1423 466432
7 32 311 343 9952
8 4 13 17 52
9 16 111 127 1776
10 64 127 191 8128
11 256 13 269 3328
12 64 73 137 4672
13 16 163 179 2608
14 64 241 305 15424
15 8 419 427 3352
16 32 641 673 20512
17 32 701 733 22432
18 8 449 457 3592
19 512 71 583 36352
20 16 73 89 1168
21 512 101 613 51712
22 32 821 853 26272
Совпадают ли мои результаты с Вашими?
Нетрудно заметить, что пары образованы числами (2^n, простое число). Есть ли решения другого вида ?
Задача о двух мудрецах. Компьютерная программа для решения