Skrypt w Bashu

luke877
Użytkownik
Użytkownik
Posty: 114
Rejestracja: 29 paź 2007, o 19:00
Płeć: Mężczyzna
Lokalizacja: Rybnik
Podziękował: 50 razy

Skrypt w Bashu

Post autor: luke877 »

Czy ktos pomogl by mi napisac program do sprawdzania liczb pierwszych w powloce bash?
voldenet
Użytkownik
Użytkownik
Posty: 41
Rejestracja: 19 paź 2008, o 20:59
Płeć: Mężczyzna
Lokalizacja: Szczecin
Pomógł: 5 razy

Skrypt w Bashu

Post 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.
luke877
Użytkownik
Użytkownik
Posty: 114
Rejestracja: 29 paź 2007, o 19:00
Płeć: Mężczyzna
Lokalizacja: Rybnik
Podziękował: 50 razy

Skrypt w Bashu

Post autor: luke877 »

Dzieki za to ! Moglbys mi jeszcze napisac co w ktorej linijce sie dzieje ?
voldenet
Użytkownik
Użytkownik
Posty: 41
Rejestracja: 19 paź 2008, o 20:59
Płeć: Mężczyzna
Lokalizacja: Szczecin
Pomógł: 5 razy

Skrypt w Bashu

Post 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"
luke877
Użytkownik
Użytkownik
Posty: 114
Rejestracja: 29 paź 2007, o 19:00
Płeć: Mężczyzna
Lokalizacja: Rybnik
Podziękował: 50 razy

Skrypt w Bashu

Post 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.
voldenet
Użytkownik
Użytkownik
Posty: 41
Rejestracja: 19 paź 2008, o 20:59
Płeć: Mężczyzna
Lokalizacja: Szczecin
Pomógł: 5 razy

Skrypt w Bashu

Post autor: voldenet »

Najwyraźniej twoje $i nie było liczbą.

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