Par ou Impar?
Dica publicada em Shell Script / Introdução
Par ou Impar?
Segue uma dica simples, sobre como qualificar se um determinado número é par ou impar, sem efetuar operação aritmética "(($N%2==0))".
Dica:
seq -w 0 10|sed -n 's/[02468]$/& => Par/p;s/[0-9]$/& => Impar/p';
Modo usual:
for ((n=1;n<=10;n++));do (($n%2==0)) && printf "%03d => Par\n" $n || printf "%03d => Impar\n" $n; done;
O modo "usual" é mais rápido para pequenas contagens. Para contagens maiores, o modo da "dica", foi mais rápido.
time (seq -w 0 25000|sed -n 's/[02468]$/& => Par/p;s/[0-9]$/& => Impar/p'|wc;)
25001 75003 350013
real 0m0,046s
user 0m0,083s
sys 0m0,012s
time (for ((n=0;n<=25000;n++));do (($n%2==0)) && printf "%05d => Par\n" $n || printf "%05d => Impar\n" $n;done|wc;)
25001 75003 350013
real 0m0,746s
user 0m0,731s
sys 0m0,186s
É isso. Um dia, pode ser útil...
Dica:
seq -w 0 10|sed -n 's/[02468]$/& => Par/p;s/[0-9]$/& => Impar/p';
Modo usual:
for ((n=1;n<=10;n++));do (($n%2==0)) && printf "%03d => Par\n" $n || printf "%03d => Impar\n" $n; done;
O modo "usual" é mais rápido para pequenas contagens. Para contagens maiores, o modo da "dica", foi mais rápido.
time (seq -w 0 25000|sed -n 's/[02468]$/& => Par/p;s/[0-9]$/& => Impar/p'|wc;)
25001 75003 350013
real 0m0,046s
user 0m0,083s
sys 0m0,012s
time (for ((n=0;n<=25000;n++));do (($n%2==0)) && printf "%05d => Par\n" $n || printf "%05d => Impar\n" $n;done|wc;)
25001 75003 350013
real 0m0,746s
user 0m0,731s
sys 0m0,186s
É isso. Um dia, pode ser útil...
Legal.
___________________________________________________________