Et Armstrong-nummer er et nøglebegreb inden for kryptering og dekryptering til datasikkerhed.
Det generelle koncept med at behandle cifrene i et tal er en grundlæggende teknik. Du kan løse mange opgaver med denne tilgang, som at summere cifre, få produktet af cifre, tælle cifre og vende et tal.
Men hvad er et Armstrong-nummer, og hvordan tester man for et?
Hvad er et Armstrong-nummer?
Et Armstrong-tal er et tal, hvis sum af kuberne af dets cifre er lig med selve tallet. For eksempel er 153 et Armstrong-tal. Hvis du tager cifrene i 153 individuelt og kuber dem:
(1 × 1 × 1) + (5 × 5 × 5) + (3 × 3 × 3)
Tilføj derefter resultaterne:
1 + 125 + 27
Du får 153, det samme som det oprindelige nummer.
En algoritme til at finde et Armstrong-nummer
At skrive en algoritme er det første skridt til at implementere ethvert program. Du kan bruge algoritmen som reference til at skrive pseudokode og derefter implementere den ved at bruge dit ønskede programmeringssprog. En algoritme giver dig den nøjagtige række af instruktioner, du skal følge, eliminerer logiske fejl og gør implementeringen enklere.
Her er algoritmen til at finde ud af, om et tal er Armstrong eller ej:
- Deklarer variabler sum, temp, n, r
- Tag værdien af n fra brugeren
- Initialiser variabel sum til 0 og tag backup af n som temp = n
- Gentag trin 5 - 7, mens n > 0
- r = n % 10
- sum = sum + terning af hvert ciffer (r × r × r)
- n = n/10
- Hvis sum er lig med temperatur, skal du vise "Number er et Armstrong-tal"
- Ellers skal du vise "Number er ikke et Armstrong-nummer"
Pseudokode til implementering af Armstrong-algoritmen
Pseudokode kan være et nyttigt skridt til at designe implementeringen af en algoritme. At skrive pseudokoden hjælper dig med nemt at konvertere den til kode i et hvilket som helst programmeringssprog. Her er pseudokoden til implementeringen af Armstrong-nummeret:
Armstrong-programmet i C
Observer pseudokoden ovenfor og konverter hver sætning til C-kode.
Start med at importere stdio.h at udføre input og output operationer. Erklære vigtigste funktion og begynde at implementere programmets logik. Brug n for at gemme det indtastede nummer, r for at gemme de individuelle cifre i nummeret, sum at gemme summen af cifrenes terninger, og Midlertidig for at gemme en kopi af nummeret.
Brug printf funktion for at bede brugeren om at indtaste et nummer. Brug scanf funktion til at læse tallet og gemme det i variabel n. %d er decimalformatspecifikationen for at tage et heltal som input.
Ryd enhver affaldsværdi ud ved at initialisere sum som nul og tag en backup af n som temp.
#omfatte <stdio.h>
intvigtigste()
{
int n, r, sum, temp;
printf("Indtast venligst et nummer: ");
scanf("%d", &n);
sum = 0; temp = n;
Erklære en mens sløjfe, der løber indtil tallet er nul eller mindre. Inde i løkken er en tre-trins proces, som du kan bruge i forskellige andre programmeringsopgaver. De tre trin er:
- Få det enkelte ciffer i tallet ved at tage tallets modul med 10. Når du dividerer et hvilket som helst tal med 10 som helhed, er resten selve det sidste ciffer. For eksempel, når du dividerer 153 med 10, er heltalsresultatet 15, og modulet er 3.
- Når du har det individuelle ciffer, kan du udføre den ønskede handling. For at finde et Armstrong-tal er den ønskede operation summen af kuberne af tallets cifre. Tag terningen af cifferet r og tilføj det til sumvariablen.
- Fjern det sidste ciffer i tallet ved at dividere det med 10. Ved division med 10 får du kvotienten, i dette tilfælde 15.
mens (n > 0) {
r = n % 10;
sum = sum + (r * r * r);
n = n/10;
}
Tjek, om den opnåede sum svarer til det oprindelige tal. Hvis de er ens, er tallet faktisk et Armstrong-tal, ellers er det ikke.
hvis (temp == sum)
printf("Nummeret er et Armstrong-nummer\n");
andet
printf("Nummeret er ikke et Armstrong-nummer\n");
Vend tilbage0;
}
Andre anvendelser af den generelle algoritme
Ved at ændre trin to af tretrinslogikken ovenfor, kan du implementere en række forskellige programmer.
1. Sum, Produkt af Talscifre
For at få summen af cifre i et tal skal du blot erstatte linjen med:
sum = sum + r;
For produkt skal du erklære variabel prod som 1 og erstatte additionssummen med et multiplikationssymbol:
prod = prod * r;
2. Antal cifre
Til tæl cifrene i et tal, skal du blot initialisere en variabel optælling til nul, udelade trin et og øge det, indtil n er lig med nul. Implementeringen af løkken vil se sådan ud:
mens (n > 0) {
tælle++;
n = n/10;
}
3. Omvendt af tal, palindromnummer
For at vende et tal skal du initialisere et variabelt omdrejningstal til et og tilføje det efter at have ganget med ti:
rev = (omdrejninger * 10) + r;
Når du får det omvendte af et tal, skal du sammenligne det med kopien af selve det originale nummer. Hvis det omvendte tal er lig med selve tallet, er det et palindromtal.
4. Det mindste og det største ciffer i et tal
Initialiser en variabel min som ni, og sammenlign den med cifferet udtrukket fra trin et for at finde det mindste ciffer i et tal. Du kan implementere det som:
hvis (r < min) {
min = r;
}
Tilsvarende initialiser en variabel max med nul, og sammenlign den med det udtrukne ciffer for at finde det største ciffer i et tal. Du kan implementere det som:
hvis (r > max) {
max = r;
}
Sådan kan du finde de største og mindste cifre i et tal.
5. Særlige numre
Der er mange andre tal, som et Armstrong-tal, som du kan beregne. Disse inkluderer neonnummer, automorfisk tal, Krishnamurthy-nummer, buzz-nummer, perfekt tal, venskabeligt tal og tvillingeprimtal.
Programmering og matematik
Matematik er meget brugt i programmering. Binær matematik er kernen i programmering, da al den software, du bruger i dag, er en kombination af cifrene nul og et. Alle de data, du arbejder med, gemmes i binært format. Lineær algebra bruges i maskinlæringsapplikationer, grafalgoritmer, kvanteberegning og mere.
Calculus, diskret matematik og statistik er meget brugt i problemløsning og algoritmedesign. Matematik forbedrer dine beregningsevner og er en væsentlig del af programmering.