Strona 1 z 1

Skrypt w Bashu

: 26 paź 2008, o 18:44
autor: luke877
Czy ktos pomogl by mi napisac program do sprawdzania liczb pierwszych w powloce bash?

Skrypt w Bashu

: 29 paź 2008, o 02:19
autor: voldenet

Kod: Zaznacz cały

i=$1 
p="0"  
x="2" 
while [ $x -lt $i ]
do
if [ $(expr $i % $x) -eq "0" ] ; then p="1"; fi
x=$(expr $x + 1)
done
if [ $p -eq "1" ] ; then echo "nie"; fi;
if [ $p -eq "0" ] ; then echo "tak"; fi;
Mając takie coś w pliku "lpi.sh" wpisujesz w konsolę:

Kod: Zaznacz cały

sh lpi.sh liczba
po czym skrypt wyrzuci Ci, czy jest pierwsza.

Skrypt w Bashu

: 1 lis 2008, o 14:50
autor: luke877
Dzieki za to ! Moglbys mi jeszcze napisac co w ktorej linijce sie dzieje ?

Skrypt w Bashu

: 1 lis 2008, o 19:14
autor: voldenet

Kod: Zaznacz cały

i=$1 
p="0"  
x="2" 
Wyznaczamy zmienne: i to przekazana liczba, p to znacznik "czy liczba jest niepierwsza", a x to jeden z możliwych dzielników do pętli (każda liczba dzieli się przez 1)

Kod: Zaznacz cały

while [ $x -lt $i ]
do
if [ $(expr $i % $x) -eq "0" ] ; then p="1"; fi
x=$(expr $x + 1)
done
if [ $p -eq "1" ] ; then echo "nie"; fi;
if [ $p -eq "0" ] ; then echo "tak"; fi;
Dopóki $x < $i {
jeśli $i jest podzielne przez $x, wtedy liczba jest niepierwsza
powiększ i o jeden i kontynuuj pętlę "dopóki"
}
Jeśli p=1 to wyświetl "nie"
Jeśli p=0 to wyświetl "tak"

Skrypt w Bashu

: 5 sty 2009, o 20:08
autor: luke877
program wyswietla mi taki blad:

lpi.sh: line 6: [:2+1: integer expression expected

O co chodzi? Dodam ze mimo tego program robi to co powinien.

Skrypt w Bashu

: 2 wrz 2009, o 03:33
autor: voldenet
Najwyraźniej twoje $i nie było liczbą.

Możliwe też, że u ciebie expr wyrzuca jakieś dzikie rytuały.