Логик, у
StailGot версия С++11. В вашем компиляторе нужно включить соответствующий режим или переписать программу так, чтобы не использовать лямбда функции.
Например так
C++ |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
| #include <cmath>
#include <iostream>
bool is_square(const int n)
{
const int sqrt_n = std::sqrt(n);
if ( n > 2 )
for ( int i = 1; i < sqrt_n; i++ )
for ( int j = 1; j < sqrt_n; j++ )
for ( int k = 1; k < sqrt_n; k++ )
if ( (i * i + j * j + k * k ) == n )
return true;
return false;
}
int main()
{
const size_t n = 22;
const bool t = is_square ( n );
using namespace std;
cout << boolalpha << t << endl;
} |
|
StailGot, мне кажется, это что-то не то. У тебя n - сумма трёх квадратов натуральных чисел, а понятие "полный кавдрат" применимо к двум числам. Я имею ввиду квадрат суммы (разности)

. Или я что-то путаю. А как ещё понимать?

Сообщение от
Логик
натуральное число n представить в виде суммы трех полных квадратов