Помогите перевести код с перла на С++.
Вот задача:
3. Числа Пифагора определяются соотношением с^2=a^2+b^2, где a,b и c - целые числа. Составьте алгоритм нахождения n первых таких числе.
Постановка задачи: вводится некоторое n>0 (должна быть соответствующая проверка), выводится же, например, m-строк с этими числами.
Код на перле этой задачи:
eol@S5200A:~/develop$ cat ./test.pl
#!/usr/bin/perl
$n = $ARGV[0] || die;
while (++$i)
{
for ($j = 1; $j <= $i; $j++)
{
$tmp = sqrt($i*$i + $j*$j);
$m < $n ? print ++$m.":\t$i^2 + $j^2 == $tmp^2\n" : exit if (int($tmp) == $tmp);
}
}
Что выводится на экран:
1: 4^2 + 3^2 == 5^2
2: 8^2 + 6^2 == 10^2
3: 12^2 + 5^2 == 13^2
4: 12^2 + 9^2 == 15^2
5: 15^2 + 8^2 == 17^2
6: 16^2 + 12^2 == 20^2
7: 20^2 + 15^2 == 25^2
8: 21^2 + 20^2 == 29^2
9: 24^2 + 7^2 == 25^2
10: 24^2 + 10^2 == 26^2
11: 24^2 + 18^2 == 30^2
12: 28^2 + 21^2 == 35^2
13: 30^2 + 16^2 == 34^2
14: 32^2 + 24^2 == 40^2
15: 35^2 + 12^2 == 37^2
16: 36^2 + 15^2 == 39^2
17: 36^2 + 27^2 == 45^2
18: 40^2 + 9^2 == 41^2
19: 40^2 + 30^2 == 50^2
20: 42^2 + 40^2 == 58^2
21: 44^2 + 33^2 == 55^2
22: 45^2 + 24^2 == 51^2
23: 45^2 + 28^2 == 53^2
24: 48^2 + 14^2 == 50^2
25: 48^2 + 20^2 == 52^2
26: 48^2 + 36^2 == 60^2
27: 52^2 + 39^2 == 65^2
28: 55^2 + 48^2 == 73^2
29: 56^2 + 33^2 == 65^2
30: 56^2 + 42^2 == 70^2
Если же, кто-то сможет, написать на С++ код этой задачи с более эффективным алгоритмом, то буду премного благодарен.
А ещё, был бы признателен за код к следующим задачам:
1.Написать программу для нахождения корня алгебраического уравнения f(x)=0 методом деления отрезка пополам, если известно, что корень существует, единственный и содержится в отрезке [x1,x2]. Найти на отрезке [0.5, 2.0] корень уравнения (4+х^2)(e^x - e^(-x))=18.
Постановка задачи: вводится, например, x1 и x2, которые являются концами отрезка, в котором должен лежать корень на оси абсцисс. х1 должен быть левее х2, и мы должны проверить лежит ли корень в этом отрезке. Затем сдвигать х1 и х2 к середине отрезка, который равен (х1+х2)/2, до тех пор пока f(x) не будет равна 0. Когда это произойдёт, выводится х, который и является корнем уравнения.
2.Определить k - количество натуральных трёхзначных числе, сумма цифр которых равна n (1<=n<=27). Вывести эти числа.
Постановка задачи: вводится некоторое n в заданном промежутке допустимых значений, выводится k - сумма таких чисел и, например, m - сами эти числа. Допустим ввели n=2, выводится k=2(всего два таких числа) и m=101 и m=110(сами эти числа).