#!/bin/bash schleife=0 while [ "$schleife" -lt "$(tput cols)" ] do colu[$schleife]="_" ((schleife=schleife+1)) done line=$(echo "${colu[*]}"|sed 's/ //g') schleife=0 while [ "$schleife" -lt "$(tput cols)" ] do colu[$schleife]="#" ((schleife=schleife+1)) done line2=$(echo "${colu[*]}"|sed 's/ //g') schleife=0 while [ "$schleife" -lt "$(tput cols)" ] do colu[$schleife]="=" ((schleife=schleife+1)) done line3=$(echo "${colu[*]}"|sed 's/ //g') if [ $# -lt 1 ] then echo "$0 Von Zahl bis Zahl" echo "Reinis Collatz n3+1 Problem mit" echo "Primzahl und Ziffern Auswertung" echo "2021-10-02 Ver.1.0" echo $line exit fi if [ -z ${2+x} ] then $0 $1 $1 exit fi if [ $1 -gt $2 ] then echo "Startzahl muss groeßer als Endzahl sein" echo $line exit fi b=0 c=0 d=0 e=0 f=0 g=0 h=0 i=0 j=0 ab=0 ac=0 ad=0 ae=0 af=0 ag=0 ah=0 ai=0 aj=0 ak=0 parnr=0 for y in $(seq $1 $2) do prim=0 a=$y while [ $a -gt "1" ] do if test $(expr $a % 2) -eq 0 then a=$(echo "scale=0;$a/2"|bc -l) else a=$(echo "scale=0;$a*3+1"|bc -l) fi if [ -z "$a" ]; then echo -n "Zahl: "; read ZAHL; else ZAHL=$a; fi function PRIMTEST { P_PRIM=0 P_ZAHL=$a if [ $P_ZAHL -le 1 ] then P_PRIM=1 return $P_PRIM fi if [ $(($P_ZAHL % 2)) -eq 0 ] && [ $P_ZAHL -ne 2 ] then P_PRIM=1 return $P_PRIM fi for ((p_i=3; p_i<$P_ZAHL;p_i+=2)) do if [ $(($P_ZAHL % $p_i)) -eq 0 ] then P_PRIM=1 return $P_PRIM fi done return $P_PRIM } if PRIMTEST $ZAHL then ((prim=prim+1)) echo "$ZAHL ist eine Primzahl = $prim." else echo $ZAHL fi if [ $a -eq 1 ] then parray[$parnr]="$y->$prim;" ((parnr=parnr+1)) echo "----fin---off--[$y]" echo $line fi x=${a:0:1} case $x in 1) ((b=b+1));; 2) ((c=c+1));; 3) ((d=d+1));; 4) ((e=e+1));; 5) ((f=f+1));; 6) ((g=g+1));; 7) ((h=h+1));; 8) ((i=i+1));; 9) ((j=j+1));; esac laenge=$(echo $a|wc -c) von=0 bis=1 while [ "$laenge" -gt "$bis" ] do ((von=von+1)) ((bis=bis+1)) z=${a:$von:$bis} case $z in 1) ((ab=ab+1));; 2) ((ac=ac+1));; 3) ((ad=ad+1));; 4) ((ae=ae+1));; 5) ((af=af+1));; 6) ((ag=ag+1));; 7) ((ah=ah+1));; 8) ((ai=ai+1));; 9) ((aj=aj+1));; 0) ((ak=ak+1));; esac done done done p=$(echo "scale=0;$b+$c+$d+$e+$f+$g+$h+$i+$j"|bc -l) b=$(echo "($b/$p)*100"|bc -l) c=$(echo "($c/$p)*100"|bc -l) d=$(echo "($d/$p)*100"|bc -l) e=$(echo "($e/$p)*100"|bc -l) f=$(echo "($f/$p)*100"|bc -l) g=$(echo "($g/$p)*100"|bc -l) h=$(echo "($h/$p)*100"|bc -l) j=$(echo "($j/$p)*100"|bc -l) i=$(echo "($i/$p)*100"|bc -l) q=$(echo "scale=0;$ab+$ac+$ad+$ae+$af+$ag+$ah+$ai+$aj+$ak"|bc -l) ab=$(echo "($ab/$q)*100"|bc -l) ac=$(echo "($ac/$q)*100"|bc -l) ad=$(echo "($ad/$q)*100"|bc -l) ae=$(echo "($ae/$q)*100"|bc -l) af=$(echo "($af/$q)*100"|bc -l) ag=$(echo "($ag/$q)*100"|bc -l) ah=$(echo "($ah/$q)*100"|bc -l) aj=$(echo "($aj/$q)*100"|bc -l) ai=$(echo "($ai/$q)*100"|bc -l) ak=$(echo "($ak/$q)*100"|bc -l) echo $line2 echo "Anfangziffern Häufigkeit" echo " Von 1 bis 9 " echo "${b:0:2}%|${c:0:2}%|${d:0:2}%|${e:0:2}%|${f:0:2}%|${g:0:2}%|${h:0:2}%|${i:0:2}%|${j:0:2}%" echo $line echo "Allgemeines Ziffern Vorkommen" echo " Von 0 bis 9 " echo "${ab:0:2}%|${ac:0:2}%|${ad:0:2}%|${ae:0:2}%|${af:0:2}%|${ag:0:2}%|${ah:0:2}%|${ai:0:2}%|${aj:0:2}%|${ak:0:2}%" echo $line echo "Zahl->Primzahlenvorkommen" pcount=0 proadd=0 for lo in $(echo ${parray[*]}) do ((pcount=pcount+1)) vor=$(echo $lo|cut -f1 -d'-') hin=$(echo $lo|cut -f2 -d'>'|cut -f1 -d';') pro=$(echo "($hin/$vor)*100"|bc -l) proadd=$(echo "$proadd+$pro"|bc -l) echo "$lo = ${pro:0:2}%" done primprozent=$(echo "$proadd/$pcount"|bc -l) echo $line echo "Prozentsatz der durchschnittlichen Primzahlvorkommen" echo "----- ${primprozent:0:2}% -----" echo $line2 echo $line3