Et Armstrong-nummer er et nøkkelbegrep innen kryptering og dekryptering for datasikkerhet.
Det generelle konseptet med å behandle sifrene til et tall er en grunnleggende teknikk. Du kan løse mange oppgaver med denne tilnærmingen, som å summere sifre, få produktet av sifre, telle sifre og snu et tall.
Men hva er et Armstrong-nummer og hvordan tester du for et?
Hva er et Armstrong-nummer?
Et Armstrong-tall er et tall hvis sum av kubene av sifrene er lik tallet selv. For eksempel er 153 et Armstrong-tall. Hvis du tar sifrene til 153 individuelt og kuber dem:
(1 × 1 × 1) + (5 × 5 × 5) + (3 × 3 × 3)
Legg deretter til resultatene:
1 + 125 + 27
Du får 153, det samme som det opprinnelige tallet.
En algoritme for å finne et Armstrong-nummer
Å skrive en algoritme er det første trinnet for å implementere ethvert program. Du kan bruke algoritmen som en referanse for å skrive pseudokode, og deretter implementere den ved å bruke ønsket programmeringsspråk. En algoritme gir deg den nøyaktige serien med instruksjoner du må følge, eliminerer logiske feil og gjør implementeringen enklere.
Her er algoritmen for å finne ut om et tall er Armstrong eller ikke:
- Deklarer variabler sum, temp, n, r
- Ta verdien av n fra brukeren
- Initialiser variabel sum til 0 og ta backup av n som temp = n
- Gjenta trinn 5 - 7 mens n > 0
- r = n % 10
- sum = sum + terning av hvert siffer (r × r × r)
- n = n / 10
- Hvis summen er lik temp, viser "Tall er et Armstrong-tall"
- Ellers, vis "Nummer er ikke et Armstrong-nummer"
Pseudokode for implementering av Armstrong-algoritmen
Pseudokode kan være et nyttig trinn i utformingen av implementeringen av en algoritme. Å skrive pseudokoden hjelper deg med å enkelt konvertere den til kode på et hvilket som helst programmeringsspråk. Her er pseudokoden for implementeringen av Armstrong-nummeret:
Armstrong-programmet i C
Observer pseudokoden ovenfor og konverter hver setning til C-kode.
Start med å importere stdio.h for å utføre inngangs- og utdataoperasjoner. Erklære hoved- funksjon og begynn å implementere logikken til programmet. Bruk n for å lagre inndatanummeret, r for å lagre de individuelle sifrene i nummeret, sum å lagre summen av kubene til sifrene, og temp for å lagre en kopi av nummeret.
Bruke printf funksjon for å be brukeren om å legge inn et tall. Bruke scanf funksjon for å lese tallet og lagre det i variabel n. %d er desimalformatspesifikasjonen for å ta et heltall som input.
Fjern eventuelle søppelverdier ved å initialisere sum som null og ta en sikkerhetskopi av n som temp.
#inkludere <stdio.h>
inthoved-()
{
int n, r, sum, temp;
printf("Vennligst skriv inn et tall: ");
scanf("%d", &n);
sum = 0; temp = n;
Erklær en samtidig som sløyfe som går til tallet er null eller mindre. Inne i loopen er en tre-trinns prosess som du kan bruke i forskjellige andre programmeringsoppgaver. De tre trinnene er:
- Få det individuelle sifferet i tallet ved å ta tallets modul med 10. Når du deler et tall med 10 som en helhet, er resten selve det siste sifferet. For eksempel, når du deler 153 med 10, er heltallsresultatet 15 og modulen er 3.
- Når du har det individuelle sifferet, kan du utføre ønsket operasjon. For å finne et Armstrong-tall er ønsket operasjon summen av kubene av tallets sifre. Ta kuben til sifferet r og legg den til sumvariabelen.
- Eliminer det siste sifferet i tallet ved å dele det på 10. Ved deling på 10 får du kvotienten, i dette tilfellet 15.
samtidig som (n > 0) {
r = n % 10;
sum = sum + (r * r * r);
n = n/10;
}
Sjekk om summen som er oppnådd er lik det opprinnelige tallet. Hvis de er like, er tallet virkelig et Armstrong-tall, ellers er det ikke det.
if (temp == sum)
printf("Tallet er et Armstrong-nummer\n");
ellers
printf("Nummeret er ikke et Armstrong-nummer\n");
komme tilbake0;
}
Andre applikasjoner av den generelle algoritmen
Ved å endre trinn to i tre-trinns logikken ovenfor, kan du implementere en rekke programmer.
1. Sum, produkt av sifre i tall
For å få summen av sifre i et tall, erstatt linjen med:
sum = sum + r;
For produkt, erklær variabel prod som 1 og erstatt addisjonssummen med et multiplikasjonssymbol:
prod = prod * r;
2. Antall sifre i tall
Til telle sifrene i et tall, initialiser ganske enkelt en variabeltelling til null, slipp trinn én og øk den til n er lik null. Implementeringen av løkken vil se slik ut:
samtidig som (n > 0) {
telle++;
n = n/10;
}
3. Omvendt av tall, palindromnummer
For å reversere et tall, initialiser en variabel turtall til én, og legg den til etter å ha multiplisert med ti:
rev = (rev * 10) + r;
Når du får det motsatte av et tall, sammenligner du det med kopien av selve det opprinnelige nummeret. Hvis det motsatte tallet er lik tallet selv, er det et palindromnummer.
4. Minste og største siffer i et tall
Initialiser en variabel min som ni og sammenlign den med sifferet hentet fra trinn én for å finne det minste sifferet i et tall. Du kan implementere det som:
hvis (r < min) {
min = r;
}
På samme måte initialiser en variabel maks med null, og sammenlign den med sifferet som trekkes ut for å finne det største sifferet i et tall. Du kan implementere det som:
hvis (r > maks) {
maks = r;
}
Slik kan du finne de største og minste sifrene i et tall.
5. Spesielle tall
Det er mange andre tall, som et Armstrong-tall, som du kan beregne. Disse inkluderer Neon-nummer, Automorphic-nummer, Krishnamurthy-nummer, Buzz-nummer, Perfekt tall, Amicable-nummer og Twin-primtall.
Programmering og matematikk
Matematikk er mye brukt i programmering. Binær matematikk er kjernen i programmering da all programvaren du bruker i dag er en kombinasjon av sifrene null og én. Alle dataene du jobber med lagres i binært format. Lineær algebra brukes i maskinlæringsapplikasjoner, grafalgoritmer, kvanteberegning og mer.
Kalkulus, diskret matematikk og statistikk er mye brukt i problemløsning og algoritmedesign. Matematikk forbedrer dine beregningsevner og er en viktig del av programmering.