Dutch: Er wordt op dit moment aan RootX geknutseld en getest. Hierdoor is de inhoud van de site misschien niet correct weergeven of werkt misschien niet alles zoals zou moeten. Updates volgen!
English: ATM We are busy working on RootX or smoking joints like all dutch people do. Come back later.

RootX

Don't know, start thinking!

#RootX @ Quakenet

  

[bash] priemgetallen

  

Door MyroX. Geplaatst op: 11-05-2008

Mogguh!

Uit verveling ben ik een lijstje aan het maken van priemgetallen... Mijn scriptje loopt vrij langzaam. Weten jullie nog wat regeltjes waarmee ik de snelheid van het scriptje kan verhogen?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

testgetal=`tail -1 priemgetallen.txt`
testgetal=`expr ${testgetal:-1} + 2`
und=0
while true
do
  halvetest=`expr $testgetal / 2`
  deelgetal=2

  until [ $deelgetal -gt $halvetest ]
  do
    if [ `expr $testgetal % $deelgetal` -ne 0 ]
    then
      deelgetal=`expr $deelgetal + 1`
      und=0
    else
      und=1
      break
    fi
  done

if [ $und = 0 ]
then
  echo $testgetal >>priemgetallen.txt
fi
testgetal=`expr $testgetal + 2`
done

  

Comments

  

Comments

Door MyroX op 15-05-2008 11:11:07
Ik heb wat nieuwe aanpassingen om het script sneller te maken. Namelijk:
- Het getal hoeft niet door even nummers gedeeld te worden, want als iets deelbaar is door een even getal, is het ook deelbaar door 2.
- Ik deel het testgetal door het deelgetal, totdat het deelgetal groter dan de helft van het testgetal is. Dit is eigenlijk een hoop nutteloze delingen. Als je het testgetal door 1/3 van het testgetal kunt delen, is het testgetal ook deelbaar door 3. Het getal halvetest kan dus vervangen worden door een getal wat de wortel van het testgetal is.

De nieuwe code word dus:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29

testgetal=`tail -1 priemgetallen.txt`
testgetal=`expr ${testgetal:-1} + 2`
und=0
while true
do
  worteltest=`echo "sqrt ( $testgetal )" | bc`
  deelgetal=3

  until [ $deelgetal -gt $worteltest ]
  do
    if [ `expr $testgetal % $deelgetal` -ne 0 ]
    then
      deelgetal=`expr $deelgetal + 2`
      und=0
    else
      und=1
      break
    fi
  done

if [ $und = 0 ]
then
  echo $testgetal >>priemgetallen.txt
fi
testgetal=`expr $testgetal + 2`
done



En potverdorie, wat is het script nu snel! =D
    
Door Nowhereman op 15-05-2008 22:13:39
    Kewl te zien dat je flink met bash aan de slag bent gegaan! D8 dat jij linux links had laten liggen?
        
Door MyroX op 16-05-2008 10:19:29
        Mwja, eerst liet ik het inderdaad links liggen, maar toen kwam er een mooie mogelijkheid voor me om AIX beheerder te worden. En dat doe ik nu al bijna 2 jaar. Verdient stukken beter dan Windows, en blijkt nog eens vele malen leuker te zijn ook! En ja, AIX en Linux schelen niet veel... :-)
            
Door Nowhereman op 16-05-2008 19:53:39
            *nix systemen beheer ik ook altijd een stuk liever dan MS systemen. Het zit allemaal logischer in elkaar, is wat mij betreft nogsteeds stabieler, zeker als server en het spul is beter te beveiligen. En naast dat alles, heb je shit dan kun je zelf aan de bak om het op te lossen en hoef je niet op een patch te gaan zitten wachten. :)
Je moet eerst inloggen voordat je een reply kunt plaatsen