sexta-feira, 9 de abril de 2010

Números primos em PHP

Exercício 1
Fazer um código em php, que calcule números primos.
Números primos 1.
< php
for ($n = 2; $n <= 100; $n++) {
$primo = true;
for ($x = 2; $x < $n; $x++) {
if ($n % $x == 0) {
$primo = false;
break;
}
}
if ($primo) {
echo ' ' . $n;
}
}
?>

Bem ai está o código, espero que este seja suficiente.

15 comentários:

  1. Bom dia! Gostaria de entender melhor. Porque meu professor quer que eu apenas APRESENTE os números primos. Então, eu simplesmente excluo o 2º "FOR" e no echo escrevo: ECHO $n ?? É isso?
    #Desculpe minha ignorância rs... Sou novata ainda rs..

    ResponderExcluir
  2. Não Rá, se você excluir o segundo for vai imprimir os números de 2 a 100. O pulo do gato está no segundo for onde o operador MODULO (%) verifica se o modulo daquele valor é igual a 0, se é igual a 0 a var primo recebe FALSE e então na condição IF($primo) testa se ela é TRUE se não for não imprimi e volta no primeiro for, agora se ela passa pelo IF do modulo ela é exibida pois no primeiro for ela recebe TRUE; Pode parecer meio complexo, mas se entender a essência você decifra isso na primeira leitura do código.

    ResponderExcluir
  3. Rá veja este método que acabei de escrever baseando-se no método do Jurandi, este imprimi o próximo primo no intervalo de um valor fornecido pelo usuário e 1 milhão..:

    function nextCousin($value) {
    $number = $value + 1;
    for($i = $number; $i <= 100000000; $i++){
    $cousin = true;
    for($j = 2; $j < $i; $j++){
    if($i % $j == 0){
    $cousin = false;
    break;
    }
    }
    if($cousin)
    return $i;
    }
    }

    //Entre com um valor de 0 a 1 milhão.
    echo nextCousin(454564);

    ResponderExcluir
  4. Este comentário foi removido pelo autor.

    ResponderExcluir
  5. Este comentário foi removido pelo autor.

    ResponderExcluir
  6. Este comentário foi removido pelo autor.

    ResponderExcluir
  7. Este comentário foi removido pelo autor.

    ResponderExcluir
  8. Hum, descobri um erro no meu código. Segue corrigido:
    #Lista primos de 3 a 1000
    for ($n = 3; $n <= 30; ($n = $n + 2)) {
    $rut = sqrt($n);
    $primo = true;
    for ($x = 3; $x <= $rut; ($x = $x + 2)) {
    if ($n % $x == 0) {
    echo " rut " . $rut . " x " . $x . " n " . $n;
    $primo = false;
    break;
    }
    }
    if ($primo) {
    echo ' ' . $n;
    }
    }

    ResponderExcluir
  9. Agora, o código corrigido do nextCousin:
    function nextCousin($value)
    {
    $number = $value;
    if($number % 2 == 0)
    $number = $number + 1;
    for($i = $number; $i <= 100000000; ($i = $i + 2)){
    $rut = sqrt($i);
    $cousin = true;
    for($j = 3; $j <= $rut; ($j = $j + 2)){
    if($i % $j == 0){
    $cousin = false;
    break;
    }
    }
    if($cousin)
    return $i;
    }
    }

    ResponderExcluir
  10. basta colocar assim (obs usei for html com post):

    $num=$_POST['num'];
    $n = $num;

    for ($m=2; $m <= $n; $m++)
    {
    $primo = true;
    for ($x = 2; $x < $n; $x++)
    {
    if ($num % $x == 0)
    {
    $primo = false;
    break;
    }
    }
    }
    if ($primo)
    {
    echo "$num é primo";
    }
    else
    {
    echo "$num não é primo!!!";
    }

    ResponderExcluir
  11. eu to querendo fazer uma doideira tenho um pc que ta parado aqui em casa e gostaria de colocar ele pra trabalhar um pouco gostaria de criar um algoritmo pra calcular os numeros primos e ir armazenando num arquivo de texto ate ele ocupar o espaço do hd

    ResponderExcluir
  12. eu to querendo fazer uma doideira tenho um pc que ta parado aqui em casa e gostaria de colocar ele pra trabalhar um pouco gostaria de criar um algoritmo pra calcular os numeros primos e ir armazenando num arquivo de texto ate ele ocupar o espaço do hd

    ResponderExcluir
  13. Olá, tenho aqui um código que me mostra se um numero é primo, ou não. No entanto, ele assume que o número 1 é primo :(
    Como posso corrigir este código?

    function primo($num)
    {
    $cont=0;
    // Funcion que recorre todos los numero desde el 2 hasta el valor recibido
    for($i=2;$i<=$num;$i++)
    {
    if($num%$i==0)
    {
    # Si se puede dividir por algun numero mas de una vez, no es primo
    if(++$cont>1)
    return false;
    }
    }
    return true;
    }

    ResponderExcluir
    Respostas
    1. Já fiz uma correcção, acrescentei
      if ($num==1){
      return false;
      }

      Excluir
  14. quero saber como eu faco o seguinte programa
    faca um php para informar os numeros primos ate o numero fornecido pelo usuario

    ResponderExcluir