Crivo de Eratóstenes Simples em PHP
Publicado por Perfil removido (última atualização em 24/04/2012)
[ Hits: 5.810 ]
Não é muito comentado, mas pode-se fazer scripts que rodem direto do terminal para tarefas corriqueiras em PHP.
Igual a Perl, Python e Shellscript.
Como o objetivo desta linguagem é ser uma página dinâmica de web (ou CGI, mais raro), essa observação passa por desapercebido.
Para rodar um script em PHP igual aos outros script, necessita-se de três coisas:
1ª Permissões de execução: "chmod +x ..."
2ª Colocar She-Bang na primeira linha: "#!/usr/bin/php"
3ª Todo o código deve estar entre as tags "<?php" e "?>".
O que estiver fora das tags será impresso na tela sem ser interpretado.
=================================================================
Este script tabula números primos. A contagem está marcada para o intervalo de 1 até 10000000 (dez milhões).
Um script em Perl de código muito similar tabulou aqui os ńúmeros do intervalo de um a um milhão em quase quatro segundos.
Este script fez o mesmo teste de um a um milhão em pouco menos de três, isto é um segundo a menos.
Mas o que me chamou a atenção foi que o mesmo teste para ńúmeros do intervalo de um a dez milhões levou em Perl 1min 17seg (um minuto e desessete segundos).
Este script aqui em "PHP de terminal" fez a mesma tabulação no intervalo de um a dez milhões em 57seg (cinquenta e sete segundos).
Essa diferença de 20 segundos é muito significante para não ser notada. Se fosse em hardware mais antigo, seria uma eternidade.
PHP mais rápido que Perl para ser usado em terminal?? Ainda é pouco para comparação.
Falta testar acessos a recursos de sistema e ver até onde vai o poder de fogo de ambas as linguagens para tarefas similares.
Desde CGI, administração de sistemas e uso em aplicativos...
Pra variar, não sei se ainda pode ser melhorado, nem onde pode falhar. Aguardo por bugs.
#!/usr/bin/php <?php $primes = array (2, 3); $i=5; $j=0; $k=0; do { $j = 0; $k=sqrt($i); while ($primes[++$j]<$k && ($i%$primes[$j])); $primes[$j]>$k and array_push ($primes, $i); $i+=(($i%3==2)?2:4); } while ($i<10000000); foreach ($primes as $j) { echo "$j "; } echo "\n"; ?>
Como gerar qualquer emoji ou símbolo unicode a partir do seu teclado
Instalar e Configurar o Slackware Linux em 2025
Como configurar os repositórios do apt no Debian 12 em 2025
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Configurando o Conky para iniciar corretamente no sistema
3 configurações básicas que podem melhorar muito a sua edição pelo editor nano
Como colorir os logs do terminal com ccze
Instalação Microsoft Edge no Linux Mint 22
Como configurar posicionamento e movimento de janelas no Lubuntu (Openbox) com atalhos de teclado
Instalar debian testing (13) "por cima" do debian 12 (3)
meu linux congela [RESOLVIDO] (5)
Preciso atualizar o Vim [RESOLVIDO] (8)
QUERO REVIVER UM COMPUTADOR ANTIGO, MAS TIVE PROBLEMAS COM OS LINUX QU... (9)