Welkom op de Nederland Computer Kennisnetwerk!  
 
Zoeken computer kennis
Home Hardware Netwerken Programmering Software Computerstoring Besturingssysteem
Computer Kennis >> Besturingssysteem >> unix >> Content
Hoe schrijf je een volledig programma om factoren van een bepaald getal te vinden in UNIX-shell-programmering?
Er bestaan ​​verschillende benaderingen voor het vinden van factoren in een UNIX-shellscript. Hier zijn er twee, één die `seq` en `bc` gebruikt (draagbaarder) en een andere die gebruik maakt van de rekenkundige mogelijkheden van bash (iets sneller maar minder draagbaar):

Methode 1:`seq`, `bc` en `grep` gebruiken (draagbaarder)

Deze methode is zeer draagbaar omdat deze afhankelijk is van standaard UNIX-hulpprogramma's.

``` bash

#!/bin/bash

Krijg input van de gebruiker

read -p "Voer een getal in:" num

Foutafhandeling voor niet-positieve invoer

als (( aantal <=0 )); Dan

echo "Voer een positief geheel getal in."

uitgang 1

fi

Genereer getallen van 1 tot num

volg 1 $num | terwijl ik lees; Doen

# Gebruik bc om modulo-bewerking uit te voeren. Hierbij worden grote aantallen verwerkt.

if (( $(echo "$num % $i" | bc) ==0 )); Dan

echo "$i"

fi

klaar

```

Dit script vraagt ​​de gebruiker eerst om een ​​nummer. Vervolgens wordt `seq` gebruikt om een ​​reeks getallen te genereren van 1 tot het ingevoerde getal. De 'while'-lus herhaalt elk getal en 'bc' berekent de modulo. Als de modulo 0 is, is het getal een factor en wordt het afgedrukt.

Methode 2:Bash-rekenkunde gebruiken (minder draagbaar, iets sneller)

Deze methode maakt gebruik van de ingebouwde rekenkundige mogelijkheden van bash, waardoor het iets sneller wordt voor kleinere getallen, maar het is misschien niet zo draagbaar als de `bc`-methode.

``` bash

#!/bin/bash

Krijg input van de gebruiker

read -p "Voer een getal in:" num

Foutafhandeling voor niet-positieve invoer

als (( aantal <=0 )); Dan

echo "Voer een positief geheel getal in."

uitgang 1

fi

Herhaal de getallen van 1 tot num

voor (( i=1; i<=getal; i++ )); Doen

# Controleer of i een factor is met behulp van de modulo-operator

als (( aantal % i ==0 )); Dan

echo "$i"

fi

klaar

```

Dit script is vergelijkbaar met het eerste, maar gebruikt bash's ingebouwde rekenkundige uitbreiding `((...))` voor de modulo-bewerking, waardoor de externe aanroep naar `bc` wordt vermeden.

Hoe uit te voeren:

1. Sla beide scripts op in een bestand (bijvoorbeeld `find_factors.sh`).

2. Maak het script uitvoerbaar:`chmod +x find_factors.sh`

3. Voer het script uit:`./find_factors.sh`

Voorbeelduitvoer (voor ingang 12):

```

1

2

3

4

6

12

```

Vergeet niet de methode te kiezen die het beste past bij uw behoeften en de systemen waarop u het programma gaat gebruiken. De eerste methode (met behulp van `bc`) wordt over het algemeen aanbevolen vanwege de bredere compatibiliteit ervan. De tweede is sneller voor kleinere getallen op systemen waarop de rekenkunde van bash is geoptimaliseerd.

Previous: Next:
  unix
·Hoe maak je een kalender in Co…
·Hoe je de tijdzone instellen i…
·Wie heeft de UNIX-code geschre…
·Wat is een eindige toestandsma…
·Hoe werkt een subroutine in Li…
·Wat is het commando om je huid…
·Is het een proces voor het uit…
·Wat is het verschil tussen UNI…
·Een tutorial voor AIX Unix 
  Related Articles
Wat is de definitie van computation en h…
Wat is een algoritme in de informatica e…
Wat is een schrijffout en welke invloed …
Wat betekent rekenen en hoe wordt het ge…
Wat zijn enkele belangrijke overwegingen…
Wat zijn enkele voorbeelden van beroemde…
Hoe werken computers en wat zijn de bela…
Hoe heeft de Turing-machine de ontwikkel…
Hoe kan ik een stapelteller effectief ge…
  Besturingssysteem Articles
·Hoe je het Taakbeheer Pas op Windows 7 
·Hoe maak je Stuur een fax zonder een fax…
·Hoe te Pas kleuren van taakbalk voor Win…
·Hoe maak je een Virtual PC voor Mac 
·Mijn HP printer zal niet opdagen op Wind…
·Hoe kopieer ik mijn Windows profiel van …
·Hoe te verbergen Windows System Tray Ico…
·Register bestanden zijn vermeldingen in …
·Hoe maak je een UNIX -programma? 
Copyright © Computer Kennis https://www.nldit.com