Verificar números primos en PHP

Verificar números primos en PHP. Con 2 completos ejemplos aprenderemos a detectar números primos en el lenguaje PHP y también a partir de 2 números.
Generar números primos entre dos números en PHP
Vamos a crear un formulario con 2 entradas de números, un inicio y un fin o el intervalo entre el cual se generarán los números y se verificaran si son primos.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>Generar Numeros primos</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-4">
<div class="card ">
<div class="card-header"> Ingrese rango de números </div>
<div class="card-body">
<form action="primos.php" method="POST">
<div class="form-group row">
<label for="n1" class="col-sm-1 col-form-label col-form-label-sm">Inicio:</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm" id="n1" name="n1" placeholder="Ingrese nùmero" required>
</div>
</div>
<div class="form-group row">
<label for="n2" class="col-sm-1 col-form-label col-form-label-sm">Fin:</label>
<div class="col-sm-4">
<input type="text" class="form-control form-control-sm" id="n2" name="n2" placeholder="Ingrese nùmero" required>
</div>
</div>
<button class="btn btn-primary" type="submit"> Procesar </button>
</form>
<?php
if($_POST){
$valor = $_POST['n1'];
$valor2 = $_POST['n2'];
$primos = "";
$no_primos = "";
$p = "";
$np = "";
for ($i=$valor; $i < $valor2; $i++) {
$resp = calcular_primo($i);
if ($resp == true) {
$primos = '
<tr>
<td>'." ".$i.'</td>';
$p=$p." ".$primos;
}else {
$no_primos = '
<tr>
<td>'." ".$i.'</td>
</tr>';
$np = $np." ".$no_primos;
}
}
?>
<div class="row mt-4">
<div class="col-md-3">
<table class="table table-bordered table-sm">
<thead>
<tr>
<th scope="col">Numeros Primos</th>
</tr>
</thead>
<tbody>
<?php echo $p ?>
</tbody>
</table>
</div>
<div class="col-md-3">
<table class="table table-bordered table-sm">
<thead>
<tr>
<th scope="col">Numeros No Primos</th>
</tr>
</thead>
<tbody>
<?php echo $np ?>
</tbody>
</table>
</div>
</div>
<?php
}
function calcular_primo($n){
$c = 0;
for($i = 1; $i <= $n; $i++){
if($n % $i == 0){
$c++;
}
}
if($c==2){
return true;
}
else{
return false;
}
}
?>
</div>
</div>
</div>
</body>
</html>
Explicación del código anterior.- El ejercicio anterior solicitamos 2 números y generamos una lista en dos tablas diferentes con los números primos y los que no son primos. Además, nos hemos apoyado de un framework de estilos CSS llamado Bootstrap 4.
Función verifica si un número es primo
Si deseamos crear un algoritmo simple y funciona el podemos usar la siguiente que tiene la capacidad de ingresar un número real en una variable llamado $numeroReal
y de esta manera la función nos mostrara un resultado si el numero ingresado es primo o no mediante un mensaje.
<?php
$numeroReal = 6;
if(VerificaPrimo($numeroReal)){
echo 'Es primo';
}else{
echo 'No es primo';
}
function VerificaPrimo($numeroReal)
{
if(!is_numeric($numeroReal))
//Comprobamos si es un número valido.
return false;
for ($i = 2; $i < $numeroReal; $i++) {
if (($numeroReal % $i) == 0) {
// El número no es primo
return false;
}
}
// El número es primo
return true;
}
?>
Detectar número Primo usando formulario y función
En este ejemplo es similar al anterior solo le hemos agregado más valor, a continuación, detallaremos:
- Framework BootStrap 4
- Formulario HTML
- Lenguaje HTML
De esta manera el usuario final solo ingresara un número y el formulario procesara la información enviándolo a la función para mostrar el mensaje si es primo o no a través de las alertas del framework BootStrap.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"/>
<title>verifica Numeros primos</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
</head>
<body>
<div class="container mt-4">
<?php
function VerificaPrimo($numeroReal)
{
if(!is_numeric($numeroReal))
//Comprobamos si es un número valido.
return false;
for ($i = 2; $i < $numeroReal; $i++) {
if (($numeroReal % $i) == 0) {
// El número no es primo
return false;
}
}
// El número es primo
return true;
}
if(isset($_POST["enviar"])){
$numeroReal = $_POST["n1"];
if(VerificaPrimo($numeroReal)){
echo '<div class="alert alert-primary" role="alert">Es primo</div>';
}else{
echo '<div class="alert alert-danger" role="alert">No es primo</div>';
}
}
?>
<div class="card ">
<div class="card-header"> Ingrese un número </div>
<div class="card-body">
<form action="" method="POST">
<div class="form-group row">
<label for="n1" class="col-sm-1 col-form-label col-form-label-sm">Inicio:</label>
<div class="col-sm-4">
<input type="number" class="form-control form-control-sm" id="n1" name="n1" placeholder="Ingrese nùmero" required>
</div>
</div>
<button class="btn btn-primary" name="enviar" type="submit"> Procesar </button>
</form>
</div>
</div>
</div>
</body>
</html>
Conclusiones de números primos
Hoy hemos aprendido a manejar números primos con PHP. Sin embargo, hemos hechos 2 ejemplos.
A través de rango de números y apoyándonos de un formulario para saber la cantidad de números primos
El otro ejemplo es simplemente verificar si el número ingresado en el formulario es primo o no.
Espero que esta lección es ayude, gracias.