Foros del Web » Programando para Internet » PHP »

No consigo hacer funcionar mi programa

Estas en el tema de No consigo hacer funcionar mi programa en el foro de PHP en Foros del Web. Hola. Estoy creando un generador de números primos. Resulta que las funciones no reciben las variables globales. (No me regañéis por tener un bucle infinito ...
  #1 (permalink)  
Antiguo 18/09/2009, 11:03
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 4 meses
Puntos: 0
No consigo hacer funcionar mi programa

Hola. Estoy creando un generador de números primos. Resulta que las funciones no reciben las variables globales. (No me regañéis por tener un bucle infinito al final. (es para que esté generando números primos siempre))

Código PHP:
<?php
define
('INSIDE'  true);
include (
'numbers.php');
include (
'lastnumber.php');
$number $lastnumber 2;
function 
prime($num){
    global 
$numbers;
    
$cont 1;
    foreach (
$numbers as $num => $prime){
        if(
$num $prime == 0){
            
$cont++;
        }
        if (
$cont 2){
            return 
false;
            break;
        }
    }
    if(
$cont==2){
        return 
true;
    } else {
        return 
false;
    }
}
function 
writting ($resp$number){
    global 
$primenumbers$lastprime;
    if (
$resp == true) {
        
$handle fopen("numbers.php""rb");
        
$contents stream_get_contents($handle);
        
fclose($handle);
        
$replacement    str_replace($primenumbers." => ".$lastprime$primenumbers." => ".$lastprime.","$content);
        
$replacement2    str_replace(");?>"""$content);
        
$newprimes $primenumbers +1;
        
$fp fopen('numbers.php''w');
        
fwrite($fp"".$contents."\n");
        
fwrite($fp"".$newprimes." => ".$number."\n");
        
fwrite($fp");?>\n");
        
fclose($fp);
        
$fp2 fopen('lastnumber.php''w');
        
fwrite($fp2"<?php\n");
        
fwrite($fp2"    if(!defined(\"INSIDE\")){die(\"Intento de Hackeo\");}\n");
        
fwrite($fp2"    \$lastnumber = ".$number.";\n");
        
fwrite($fp2"    \$primenumbers = ".$newprimes.";\n");
        
fwrite($fp2"    \$lastprime = ".$number.";\n");
        
fwrite($fp2"?>");
        
fclose($fp2);
        echo 
"".$number."<br>";
    } else {
        
$fp2 fopen('lastnumber.php''w');
        
fwrite($fp2"<?php\n");
        
fwrite($fp2"    if(!defined(\"INSIDE\")){die(\"Intento de Hackeo\");}\n");
        
fwrite($fp2"    \$lastnumber = ".$number.";\n");
        
fwrite($fp2"    \$primenumbers = ".$primenumbers.";\n");
        
fwrite($fp2"    \$lastprime = ".$lastprime.";\n");
        
fwrite($fp2"?>");
        
fclose($fp2);
    }
}
if (
$_GET['mode'] == "show"){
    include(
'numbers.php');
    foreach (
$numbers as $num => $prime){
        echo 
"".$prime."<br>";
    }
    exit();
}
for (
$i 1$i <= 2;){
    
$resp prime($number);
    
writting ($resp$number);
    if (
$resp == true){
        require(
'numbers.php');
    }
    
$number++;
}
?>
El lastnumber.php:
Código PHP:
<?php
    
if(!defined("INSIDE")){die("Intento de Hackeo");}
    
$lastnumber 3;
    
$primenumbers 3;
    
$lastprime 3;
?>
Y el numbers.php:
Código PHP:
<?php
if(!defined("INSIDE")){die("Intento de Hackeo");}
$numbers = array(
=> 1,
=> 2,
=> 3
);?>
  #2 (permalink)  
Antiguo 18/09/2009, 12:00
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: No consigo hacer funcionar mi programa

¿pero que quieres hacer exactamente?
  #3 (permalink)  
Antiguo 18/09/2009, 12:23
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: No consigo hacer funcionar mi programa

Lo que hace es cojer un número, el $lastnumber (Que será impar) y sumarle 2.(Conseguirá el siguiente impar. Comprueba si es primo mirando haber si se puede dividir entre los números primos que ya estén en el array $numbers. Si el número es primo, lo mete en el array y lo escupe. Si no simplemente actualiza el último número comprobado.
  #4 (permalink)  
Antiguo 20/09/2009, 12:48
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: No consigo hacer funcionar mi programa

Hola, necesito ayuda, por favor. El problema es que las funciones no reciben algunas variables.
  #5 (permalink)  
Antiguo 20/09/2009, 13:57
Avatar de kike00  
Fecha de Ingreso: febrero-2005
Ubicación: El Salvador
Mensajes: 180
Antigüedad: 19 años, 2 meses
Puntos: 7
Respuesta: No consigo hacer funcionar mi programa

Bueno solo una cuestion :P algo de "conocimiento general" un numero es primo si y solo si, es divisble entre el mismo y la unidad. Para saber si un numero es primo, se tiene que dividir el numero desde el 2 hasta la raiz cuadrada del numero que estas evaluando, si en algun caso el residuo de alguna division es 0 quiere decir que el numero no es primo.

Y si puedes especificar que funcion (creo que es la "prime") la que no te funciona, para centrarnos en eso.
Otra cosa, no se si te entendi bien, pero lo que quieres es una funcion que dado un arreglo de numeros enteros (obviemos que sean pares o impares) verificar cuales son primos... es eso?
  #6 (permalink)  
Antiguo 23/09/2009, 13:42
 
Fecha de Ingreso: enero-2008
Mensajes: 37
Antigüedad: 16 años, 4 meses
Puntos: 0
Respuesta: No consigo hacer funcionar mi programa

Si, lo que quiero es que divida el número en cuestión por todos los primos que haya sacado hasta el momento para decidir si es primo. La que no funciona es la prime pero la otra tampoco recibe correctamente algunas variables.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:54.