shell-script-pt
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [shell-script] Teste Matematico em shell


From: Humberto Pereira
Subject: Re: [shell-script] Teste Matematico em shell
Date: Mon, 24 Oct 2005 10:37:31 -0200
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20050923 Debian/1.7.12-0ubuntu05.04

Caro Ivan,

        na verdade, um numero nao eh divisivel por qquer numero inteiro, desde
q ele nao seja divisivel por qquer inteiro menor ou igual a raiz
quadrada dele. E ainda, vc nao precisa testar com o numeros pares,
apenas o numero 2 eh primo.

        Logo, dah p/ se otimizar + ainda.

#!/bin/sh

[ "$1" ] || { echo "usage: $0 number" ; exit 1 ; }
raiz=`echo "sqrt($1)" | bc`
if [ "$1" != "2" ]; then
   for ((i=3; i <= $raiz ; i += 2));do
      [ $(( $1 % $i )) -eq 0 ] && { echo "nao, $1 nao eh primo" ; exit 0 ; }
   done
fi

echo "sim, $1 eh primo"

Ivan lopes wrote:
> optimizado :
> -----------------
> #!/bin/bash
> [ "$1" ] || { echo "usage: $0 number" ; exit 1 ; }
> for ((i=2; i < $1 / 2 + 1  ; i++));do
>    [ $(( $1 % $i )) -eq 0 ] && { echo "nao, $1 nao eh primo" ; exit 0 ; }
> done
> echo "sim, $1 eh primo"
> 
> 
> A definicao de primo diz que primo eh
> o número que é dividido somente por 1 e ele mesmo.
> *sendo 1 primo
> 
> para tanto basta que nosso algoritmo divida o numero em questao por
> 2 até ele mesmo, e caso seja divisível(mod 0), teremos que o número nao
> eh primo e em caso comtrário seria primo.
> 
> logo um algoritmo da forma O(n) resolveria nosso problema.
> 
> para tanto amigos nenhum número é divisívem pela sua metade +1, ou seja
> 45 nao é divisível por 22 +1.
> logo o laco muda para
> for ((i=2; i < $1 / 2 + 1  ; i++));do
> 
> diminuindo o número de interacoes de 2n para n.
> 
> mas como O(2n)==O(n), deu na mesma ...
> 
> 
> --
> [ ]'s
> Ivan Carlos Da Silva Lopes
> 
> Engenheiro Eletronico e Computacao
> UFRJ
> 
> 
> ---------------------------------------------------------------------
> Esta lista não admite a abordagem de outras liguagens de programação, como 
> perl, C etc. Quem insistir em não seguir esta regra será moderado sem prévio 
> aviso.
> ---------------------------------------------------------------------
> Sair da lista: address@hidden
> ---------------------------------------------------------------------
> Esta lista é moderada de acordo com o previsto em 
> http://www.listas-discussao.cjb.net
> ---------------------------------------------------------------------
>  
> Links do Yahoo! Grupos
> 
> 
> 
> 
>  
> 
> 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]