Алгоритмы (PHP): различия между версиями

Материал из Информационная безопасностя
Перейти к навигации Перейти к поиску
 
(не показано 10 промежуточных версий этого же участника)
Строка 47: Строка 47:
 
=== Защита от неверного ввода ===
 
=== Защита от неверного ввода ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$x = 0;
 +
do {
 +
    $x = readline("Введите x>0:");
  
 +
    if ($x <= 0) {
 +
        echo("Неверный ввод\n");
 +
    }
 +
} while ($x <= 0);
 +
 +
echo("x = " . $x);
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод 10 первых степеней двойки ===
 
=== Вывод 10 первых степеней двойки ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 
+
<?php
 +
$x = 2;
 +
for($i = 1; $i <= 10; $i++) {
 +
    echo "2 ** " . $i . " = " . $x . "\n";
 +
    $x *= 2;
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
=== Вывод всех двухзначных чисел, кратных 5 ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 
+
<?php
 +
$x = 10;
 +
while ($x < 100) {
 +
    echo $x . "\n";
 +
    $x += 5;
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Вывод n первых чисел Фибоначчи ===
 
=== Вывод n первых чисел Фибоначчи ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 
+
<?php
 +
$n = readline("Введите целое число n (n > 1): ");
 +
$a = 1; $b = 1;
 +
echo $a . " " . $b . " ";
 +
for($i = 1; $i <= $n - 2; $i++) {
 +
    $tmp = $a;
 +
    $a = $b;
 +
    $b += $tmp;
 +
    echo $b . " ";
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
=== Найти НОД(A,B), используя алгоритм Евклида: ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$a = readline("Введите число a: ");
 +
$b = readline("Введите число b: ");
  
 +
while ($b != 0) {
 +
    $tmp = $a;
 +
    $a = $b;
 +
    $b = $tmp % $b;
 +
}
 +
 +
echo "НОД(a, b) = " . $a;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти сумму цифр целого числа m ===
 
=== Найти сумму цифр целого числа m ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$m = readline("Введите число m: ");
  
 +
$sum = 0;
 +
$m1 = abs($m);
 +
 +
while ($m1 > 0) {
 +
    $sum += $m1 % 10;
 +
    $m1 /= 10;
 +
}
 +
 +
echo "Сумма цифр числа " . $m . " = " . $sum;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти max из введенных чисел ===
 
=== Найти max из введенных чисел ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$number = readline("Введите количество чисел: ");
  
 +
$i = 1;
 +
$x = readline("Введите число " . $i . ": ");
 +
$max = $x;
 +
 +
for($i = 2; $i <= $number; $i++) {
 +
    $x = readline("Введите число " . $i . ": ");
 +
    if ($x > $max) {
 +
        $max = $x;
 +
    }
 +
}
 +
 +
echo "Максимальное из введённых чисел = " . $max;
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Найти min, удовлетворяющее условию p(x) ===
 
=== Найти min, удовлетворяющее условию p(x) ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
function p($x): bool
 +
{
 +
    return $x > 0;
 +
}
 +
 +
$number = readline("Введите количество чисел: ");
 +
$exists = false;
 +
$min = 0;
 +
 +
for($i = 1; $i <= $number; $i++) {
 +
    $x = readline("Введите число " . $i . ": ");
 +
    if ((($exists == false) && (p($x))) || (($x < $min) && p($x))) {
 +
        $min = $x;
 +
        $exists = true;
 +
    }
 +
}
  
 +
if ($exists) {
 +
    echo "Минимальное из введенных чисел, удовлетворяющих условию: " . $min;
 +
} else {
 +
    echo "Нет чисел, удовлетворяющих условию";
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Есть ли среди введенных число k? ===
 
=== Есть ли среди введенных число k? ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$n = readline("Введите количество чисел:");
 +
$k = readline("Введите искомое число k:");
  
 +
$exists = false;
 +
for($i = 1; $i <= $n; $i++) {
 +
    $x = readline("Введите число " . $i . ": ");
 +
    if ($x == $k) {
 +
        $exists = true;
 +
        break;
 +
    }
 +
}
 +
 +
if ($exists) {
 +
    echo "Число " . $k . " было введено.";
 +
} else {
 +
    echo "Число " . $k . " не было введено.";
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Является ли число N>1 простым? ===
 
=== Является ли число N>1 простым? ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$n = readline("Введите целое число n (n > 1):");
 +
 +
$isPrime = true;
 +
for($i = 2; $i <= round(sqrt($n)); $i++) {
 +
    if ($n % $i == 0) {
 +
        $isPrime = false;
 +
        break;
 +
    }
 +
}
  
 +
if ($isPrime) {
 +
    echo "Число " . $n . " является простым";
 +
} else {
 +
    echo "Число " . $n . " является составным";
 +
}
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
=== Разложение числа на простые множители ===
 
=== Разложение числа на простые множители ===
 
<syntaxhighlight lang="php" line>
 
<syntaxhighlight lang="php" line>
 +
<?php
 +
$x = readline("Введите искомое число x:");
  
 +
$i = 2;
 +
echo $x . " = 1";
 +
do {
 +
    if ($x % $i == 0) {
 +
        echo " * " . $i;
 +
        $x = $x / $i;
 +
    } else {
 +
        $i++;
 +
    }
 +
} while ($x != 1);
 
</syntaxhighlight>
 
</syntaxhighlight>

Текущая версия на 09:44, 9 июля 2021

Код программ

Сумма вводимых целых чисел

 1 <?php
 2 $number = readline("Введите число слагаемых: ");
 3 
 4 $sum = 0;
 5 for($i = 1; $i <= $number; $i++) {
 6     $x = readline("Введите слагаемое " . $i . ": ");
 7     $sum += $x;
 8 }
 9 
10 echo "Сумма равна " . $sum;

Произведение целых чисел

 1 <?php
 2 $number = readline("Введите число множителей: ");
 3 
 4 $product = 1;
 5 for($i = 1; $i <= $number; $i++) {
 6     $x = readline("Введите множитель " . $i . ": ");
 7     $product *= $x;
 8 }
 9 
10 echo "Произведение равно " . $product;

Сколько нечетных среди n введенных

 1 <?php
 2 $number = readline("Введите количество чисел: ");
 3 
 4 $count = 0;
 5 for($i = 1; $i <= $number; $i++) {
 6     $x = readline("Введите число " . $i . ": ");
 7     if (abs($x % 2) === 1) {
 8         $count++;
 9     }
10 }
11 
12 echo "Количество наечётных чисел = " . $count;

Защита от неверного ввода

 1 <?php
 2 $x = 0;
 3 do {
 4     $x = readline("Введите x>0:");
 5 
 6     if ($x <= 0) {
 7         echo("Неверный ввод\n");
 8     }
 9 } while ($x <= 0);
10 
11 echo("x = " . $x);

Вывод 10 первых степеней двойки

1 <?php
2 $x = 2;
3 for($i = 1; $i <= 10; $i++) {
4     echo "2 ** " . $i . " = " . $x . "\n";
5     $x *= 2;
6 }

Вывод всех двухзначных чисел, кратных 5

1 <?php
2 $x = 10;
3 while ($x < 100) {
4     echo $x . "\n";
5     $x += 5;
6 }

Вывод n первых чисел Фибоначчи

 1 <?php
 2 $n = readline("Введите целое число n (n > 1): ");
 3 $a = 1; $b = 1;
 4 echo $a . " " . $b . " ";
 5 for($i = 1; $i <= $n - 2; $i++) {
 6     $tmp = $a;
 7     $a = $b;
 8     $b += $tmp;
 9     echo $b . " ";
10 }

Найти НОД(A,B), используя алгоритм Евклида:

 1 <?php
 2 $a = readline("Введите число a: ");
 3 $b = readline("Введите число b: ");
 4 
 5 while ($b != 0) {
 6     $tmp = $a;
 7     $a = $b;
 8     $b = $tmp % $b;
 9 }
10 
11 echo "НОД(a, b) = " . $a;

Найти сумму цифр целого числа m

 1 <?php
 2 $m = readline("Введите число m: ");
 3 
 4 $sum = 0;
 5 $m1 = abs($m);
 6 
 7 while ($m1 > 0) {
 8     $sum += $m1 % 10;
 9     $m1 /= 10;
10 }
11 
12 echo "Сумма цифр числа " . $m . " = " . $sum;

Найти max из введенных чисел

 1 <?php
 2 $number = readline("Введите количество чисел: ");
 3 
 4 $i = 1;
 5 $x = readline("Введите число " . $i . ": ");
 6 $max = $x;
 7 
 8 for($i = 2; $i <= $number; $i++) {
 9     $x = readline("Введите число " . $i . ": ");
10     if ($x > $max) {
11         $max = $x;
12     }
13 }
14 
15 echo "Максимальное из введённых чисел = " . $max;

Найти min, удовлетворяющее условию p(x)

 1 <?php
 2 function p($x): bool
 3 {
 4     return $x > 0;
 5 }
 6 
 7 $number = readline("Введите количество чисел: ");
 8 $exists = false;
 9 $min = 0;
10 
11 for($i = 1; $i <= $number; $i++) {
12     $x = readline("Введите число " . $i . ": ");
13     if ((($exists == false) && (p($x))) || (($x < $min) && p($x))) {
14         $min = $x;
15         $exists = true;
16     }
17 }
18 
19 if ($exists) {
20     echo "Минимальное из введенных чисел, удовлетворяющих условию: " . $min;
21 } else {
22     echo "Нет чисел, удовлетворяющих условию";
23 }

Есть ли среди введенных число k?

 1 <?php
 2 $n = readline("Введите количество чисел:");
 3 $k = readline("Введите искомое число k:");
 4 
 5 $exists = false;
 6 for($i = 1; $i <= $n; $i++) {
 7     $x = readline("Введите число " . $i . ": ");
 8     if ($x == $k) {
 9         $exists = true;
10         break;
11     }
12 }
13 
14 if ($exists) {
15     echo "Число " . $k . " было введено.";
16 } else {
17     echo "Число " . $k . " не было введено.";
18 }

Является ли число N>1 простым?

 1 <?php
 2 $n = readline("Введите целое число n (n > 1):");
 3 
 4 $isPrime = true;
 5 for($i = 2; $i <= round(sqrt($n)); $i++) {
 6     if ($n % $i == 0) {
 7         $isPrime = false;
 8         break;
 9     }
10 }
11 
12 if ($isPrime) {
13     echo "Число " . $n . " является простым";
14 } else {
15     echo "Число " . $n . " является составным";
16 }

Разложение числа на простые множители

 1 <?php
 2 $x = readline("Введите искомое число x:");
 3 
 4 $i = 2;
 5 echo $x . " = 1";
 6 do {
 7     if ($x % $i == 0) {
 8         echo " * " . $i;
 9         $x = $x / $i;
10     } else {
11         $i++;
12     }
13 } while ($x != 1);