Raiz Quadrada (Square Root) para Bash
Publicado por Sergio Spoladore 06/11/2006
[ Hits: 8.829 ]
Homepage: http://yetlinux.blogspot.com
Este raro script calcula a raiz quadrada de um número natural entre 0 e 2^63 - 1. Caso ultrapasse este valor, haverá erro de cálculo. Creio ter corrigido todos os bugs. Serve como exercício de programação.
Deixo que vocês o compreendam.
#!/bin/bash verif (){ str1="$1" [[ -z "$str1" ]] && { echo "Use $0 <numero>"; echo "<numero> entre 0 e 9223372036854775807."; echo "Caso ultrapasse, havera erro de calculo."; exit 1; } str2=${str1//[0123456789]/} [[ -n "$str2" ]] && { echo "Use somente digitos de 0 a 9." exit 1; } } cortazero(){ a1=$1; while [ "$a1" != "$b1" ]; do b1=$a1; a1=${a1##0}; done; echo $a1; } sqrt(){ tmp1=$1; [[ $((${#tmp1}%2)) -eq 1 ]] && tmp1='0'$tmp1; j=0; rq='0'; rt=''; while [ -n "${tmp1:$j:2}" ]; do rt=$rt${tmp1:$j:2}; rt=`cortazero $rt`; [[ -z "$rt" ]] && rt='0'; rq=`cortazero $rq`; [[ -z "$rq" ]] && rq='0'; for ((i=1;i<=10;i++));do [[ $rt -lt $(( (`cortazero $((2*$rq))`$i) *$i)) ]] && { rt=$((rt-(`cortazero $((2*$rq))`$((i-1)))*$((i-1)))); rq=$rq$((i-1)); break; } done; let j+=2; done; rq=`cortazero $rq`; [[ -z "$rq" ]] && rq='0'; echo $rq; } verif $1; sqrt $1;
DNS dinâmico noip2 para systemd
Descobrir se um número é par ou impar
Atenção a quem posta conteúdo de dicas, scripts e tal (2)
Criando um gateway de internet com o Debian
Configuração básica do Conky para mostrar informações sobre a sua máquina no Desktop
Aprenda a criar músicas com Inteligência Artificial usando Suno AI
Entendendo o que é URI, URL, URN e conhecendo as diferenças entre POST e GET
Ativando o Modo Noturno via Linha de Comando no GNOME/Wayland
Preparando pendrive com GNU/Linux [Corretamente!]
Instalando Google Chrome no Fedora 40
Habilitando a importação de senhas no Firefox
Como corrigir o erro do VirtualBox travar a máquina virtual em tela cheia
Dificuldade de instalar Apache Office no Zorin17 (1)
Como saber quantas impressões foram feitas pela impressora? (3)
Altera pacote .pkg.tar do Arch Linux (17)