2. Два натуральных числа называются «дружественными», если каждое из них равно сумме всех делителей (кроме его самого) другого (например, числа 220 и 284). Найти все пары «дружественных чисел», которые не больше данного числа N.
Описание алгоритма
Текст программы
<html>
<head>
<title>zadanie1</title>
</head>
<body>
<?php
if (isset($_POST['n'])){
$n = $_POST['n'];
function Sum($n){
$sum = 1; $i; $beg = 2; $d = 1;
if($n & 1){
$d = 2;
$beg = 3;
}
for($i = $beg; $i*$i < $n; $i += $d) if ($n % $i == 0) $sum += ($i + $n / $i);
if ($i*$i == $n)$sum += $i;
return $sum;
}
if($n>100){
$m=1;
$a = [];
for ($i = 0; $i <= $n - $m; $i++) $a[$i] = Sum($i + $m);
for($i = 0; $i <= $n - $m; $i++)
if($a[$i] >= $m && $a[$i] <= $n && $a[$a[$i] - $m] == $i + $m && $i + $m < $a[$i])
echo $i+$m." ".$a[$i].'<br>';
}else{ echo "Дружественных чисел нет.";}
}else {
print <<< HERE
Введите число n:
<form method ="post">
<input type="number" name="n">
<input type="submit" name="Submit" value="Отправить">
</form>
HERE;
}
?>
</body>
</html>
Тестовый пример
Задание для выполнения
На плоскости координатами своих вершин заданы два треугольника. Определите, одинакового ли они типа (прямоугольный, тупоугольный, остроугольный).
|
|
Описание алгоритма
Вводятся 12 переменных, координаты каждой точки. Далее высчитывается сумма квадратов двух сторон и квадрат последней стороны. Далее сравниваем по признаку и записываем для каждого результата значение в новую переменную. Аналогично для второго треугольника. Далее сравниваем переменные и выводим получившееся значение на экран.
Блок схема
Текст программы
<html>
<head>
<title>zadanie1</title>
</head>
<body>
<?php
if (isset($_POST['a'])){
$a = $_POST['a'];
$b = $_POST['b'];
$c = $_POST['c'];
$d = $_POST['d'];
$e = $_POST['e'];
$f = $_POST['f'];
$a1 = $_POST['a1'];
$b1 = $_POST['b1'];
$c1 = $_POST['c1'];
$d1 = $_POST['d1'];
$e1 = $_POST['e1'];
$f1 = $_POST['f1'];
$sum = pow($c-$a,2)+pow($d-$b,2) + pow($e-$c,2)+pow($f-$d,2);
$CA = pow($a-$e,2)+pow($b-$f,2);
if ($sum == $CA){
$o=0;
} elseif ($sum > $CA) {
$o=1;
}
else
{
$o=2;
}
$sum1 = pow($c1-$a1,2)+pow($d1-$b1,2) + pow($e1-$c1,2)+pow($f1-$d1,2);
$CA1 = pow($a1-$e1,2)+pow($b1-$f1,2);
if ($sum1 == $CA1){
$o1=0;
} elseif ($sum > $CA1) {
$o1=1;
}
else
{
$o1=2;
}
if($o==$o1){
if ($o==$o1=0){
echo"Треугольники одинаковые, прямоугольные";
}elseif($o==$o1=1){
echo"Треугольники одинаковые, остроугольные";
}elseif($o==$o1=2){
echo"Треугольники одинаковые, тупоугольные";
}
}else{
echo"Треугольники разные";
}
} else {print <<< HERE
Введите координаты вершин:
<form method ="post">
a<input type="text" name="a"><input type="text" name="d"<br>
b<input type="text" name="b"><input type="text" name="e"<br>
c<input type="text" name="c"><input type="text" name="f"<br>
<br>
a1<input type="text" name="a1"><input type="text" name="d1"<br>
b1<input type="text" name="b1"><input type="text" name="e1"<br>
c1<input type="text" name="c1"><input type="text" name="f1"<br>
|
|
<input type='submit' name="Submit" value='Отправить'>
</form>
HERE;}
?>
</body>
</html>
Тестовый пример
[ДМ1]нет
[ДМ2]нет
[ДМ3]нет
[ДМ4]нет
[ДМ5]Нет