Разделим таблицу по диагонали слева направо (\).
Давайте будем идти по строчкам (вертикальный столбец 1, 2, 3, 4, ...) и искать, в каких столбцах (горизонтальная строка 1, 2, 3, 4, ...) встречается единичка:
- [1][3]
- [1][4]
- [2][3]
- [3][6]
- [4][5]
- [5][7]
- [5][8]
- [6][7]
- [7][8]
- [7][9]
Всё это значит связь между нумерованными кругами. Мы выписали все связи. Доказать это легко. 1 соединяется и с 3, и с 4, но не соединяется с 2. Так и есть, мы не выписывали пару [1][2]. 5 соединяется с 7 и 8, но не соединяется с 2. Всё так, как мы написали.
// PascalABC.NET 3.1, сборка 1256 от 21.06.2016
function IsPrime(n:integer):boolean;
begin
if n<4 then Result:=True
else begin
var found:= (n mod 2 = 0);
var p:=3;
while (not found) and (sqr(p)<=n) do
begin
found:=(n mod p = 0);
p+=2
end;
Result:=not found
end
end;
begin
Range(100,999).Where(n->IsPrime(n)).Println(',')
end.
<u><em>Результат</em></u>
101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997
void Draw(Graphics g, double cb, double ck, double a, double h)
{
var dashPen = new Pen(Brushes.Black)
{
DashPattern = new float[] { 10, 5 }
};
g.DrawLine(Pens.Black, 400, 100, 200, 500);
g.DrawLine(Pens.Black, 200, 500, 500, 500);
g.DrawLine(Pens.Black, 400, 100, 500, 500);
g.DrawLine(Pens.Black, 500, 500, 600, 400);
g.DrawLine(Pens.Black, 400, 100, 600, 400);
g.DrawLine(Pens.Black, 300, 400, 600, 400);
g.DrawLine(dashPen, 400, 100, 300, 400);
g.DrawLine(dashPen, 300, 400, 200, 500);
g.DrawLine(dashPen, 400, 100, 400, 450);
var font = new Font(FontFamily.GenericSansSerif, 12, FontStyle.Italic);
g.DrawString("h", font, Brushes.Black, 380, 320);
g.DrawString("a", font, Brushes.Black, 360, 500);
g.DrawString($"На бетон {(1 / 3d * a * a * h * h) * cb:#,##0.00} руб.", SystemFonts.DefaultFont, Brushes.Black, 440, 100);
g.DrawString($"На облицовку {a * Math.Sqrt(a * a + 4 * h * h) * ck:#,##0.00} руб.", SystemFonts.DefaultFont, Brushes.Black, 440, 120);
}