|  Startsida |  Hårdvara |  Nätverk |  Programmering |  Programvara |  Felsökning |  System |   
System
  • Grundläggande datorkunskaper
  • Linux
  • Mac OS
  • Ubuntu
  • Unix
  • Windows
  • Windows Vista
  • Windows XP
  • Windows 7
  • Windows 10
  • Windows 11
  • Windows 2012
  • Windows 2016
  • Windows 2019
  • Windows 2022
  • Apple
  • Android
  • iOS
  • CentOS
  • * Dator Kunskap >> System >> Unix >> Content

    Hur skriver du ett fullständigt program för att hitta faktorer med givet nummer i UNIX -skalkrogrammering?

    Det finns flera tillvägagångssätt för att hitta faktorer i ett UNIX -skalskript. Här är två, en som använder "seq" och "bc" (mer bärbar) och en annan utnyttjande bashs aritmetiska kapacitet (något snabbare men mindre bärbara):

    Metod 1:Använda `seq`,` bc` och `grep` (mer bärbar)

    Denna metod är mycket bärbar eftersom den förlitar sig på standard UNIX -verktyg.

    `` `bash

    #!/bin/bash

    Få inmatning från användaren

    Läs -p "Ange ett nummer:" Num

    felhantering för icke-positiv ingång

    if ((num <=0)); sedan

    Echo "Ange ett positivt heltal."

    avfart 1

    fi

    generera siffror från 1 till num

    SEQ 1 $ NUM | medan du läst i; do

    # Använd BC för att utföra Modulo -drift. Detta hanterar stort antal.

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

    echo "$ i"

    fi

    gjort

    `` `

    Detta skript uppmanar först användaren för ett nummer. Den använder sedan "seq" för att generera en sekvens av siffror från 1 till ingångsnumret. "Medan" -slingan itereras genom varje nummer och "BC" beräknar modulo. Om modulo är 0 är numret en faktor och skrivs ut.

    Metod 2:Använda bash aritmetik (mindre bärbar, något snabbare)

    Denna metod utnyttjar bashs inbyggda aritmetiska kapacitet, vilket gör det något snabbare för mindre antal, men den kanske inte är lika bärbar som metoden "BC".

    `` `bash

    #!/bin/bash

    Få inmatning från användaren

    Läs -p "Ange ett nummer:" Num

    felhantering för icke-positiv ingång

    if ((num <=0)); sedan

    Echo "Ange ett positivt heltal."

    avfart 1

    fi

    iterera genom siffror från 1 till num

    för ((i =1; i <=num; i ++)); do

    # Kontrollera om jag är en faktor som använder Modulo -operatör

    if ((num % i ==0)); sedan

    echo "$ i"

    fi

    gjort

    `` `

    Det här skriptet liknar det första, men använder Bashs inbyggda aritmetisk expansion `((...))` för Modulo-operationen och undviker det externa samtalet till `BC '.

    Hur man kör:

    1. Spara antingen skript i en fil (t.ex. `find_factors.sh`).

    2. Gör skriptet körbart:`chmod +x find_factors.sh`

    3. Kör skriptet:`./Find_factors.sh`

    Exempelutgång (för ingång 12):

    `` `

    1

    2

    3

    4

    6

    12

    `` `

    Kom ihåg att välja den metod som bäst passar dina behov och de system du kommer att köra den på. Den första metoden (med användning av "BC") rekommenderas vanligtvis för dess bredare kompatibilitet. Den andra är snabbare för mindre antal på system där Bashs aritmetik är optimerad.

    Tidigare:

    nästa:
    relaterade artiklar
    ·Vad är syftet med sökvariabeln i Linux?
    ·Vilket kommando skulle du använda för att skapa en to…
    ·Vad är thrashing i datorterminologi?
    ·Hur man kan eliminera Permission denied meddelanden på…
    ·Varför gav Bell Labs bort allt arbete de investerat i …
    ·Vad är skillnaden mellan LWP och trådar?
    ·Vilka är de extra misslyckanden som tillhandahålls av…
    ·Hur man skriver ut på distans till Windows Använda SC…
    ·Vad betyder förkortningen FRU?
    ·Vad är mv -kommandot i Unix?
    Utvalda artiklarna
    ·Hur man gör en Aktivitetsfältet Permanent Invisible
    ·Hur man kan stoppa Windows Installer från att komma up…
    ·Hur man gör ett lösenord för min nya dator i Windows…
    ·Kan du ta från Windows XP och installera dem i en äld…
    ·Hur du ändrar en Laptop trådlös anslutning för att …
    ·Fördelarna med XP Service Pack 3
    ·Vad står Apple -logotypen för?
    ·Hur säkra Delete
    ·Vad är en MAC -grupp?
    ·Hur Defrag en nätverksenhet
    Copyright © Dator Kunskap https://www.dator.xyz