Tägliche C-Sprachpraxis – Potenzierungszahlen finden (einschließlich Narzissenzahlen)

Inhaltsverzeichnis

Thema:

einführen:

Quellcode:

Operationsergebnis:

Lösung:


Thema:

Finden Sie alle Exponenten zwischen 0 und 100000 und geben Sie sie aus.

einführen:

Viele Freunde haben vielleicht noch nichts vom Konzept der autoexponentiellen Zahlen gehört, aber sie hätten von Narzissenzahlen gehört. Tatsächlich gehören Narzissenzahlen auch zu den autoexponentiellen Zahlen.

Eine autoexponentielle Zahl bezieht sich auf eine n-stellige Zahl, und die Summe der n-ten Potenz jeder Ziffer ist genau gleich der Zahl selbst. Beispiel: 153=1^3+5^3+3^3, dann ist 153 eine autoexponentielle Zahl.

Automatische Leistungsklassifizierung:

Einstellige Eigenleistungsnummer: Einzelzahl,

Zweistellige Potenzen: keine,

Drei zu Potenzen erhobene Ziffern: Narzissenzahl,

Vierstellige Potenzierungszahl: vierblättrige Rosenzahl,

Fünfstellige Potenzierungszahlen: Pentagrammzahlen,

Sechsstellige Potenzierungszahlen: sechs kombinierte Zahlen,

Siebenstellige Potenzierungszahl: Big Dipper-Zahl,

Achtstellige Selbstpotenzierungszahl: Acht unsterbliche Zahlen,

Neunstellige selbstpotenzierte Zahlen: Neun-Neun-Doppel-Neunte-Festival-Zahlen,

Zehnstellige Potenzierungszahlen: perfekte Zahlen

Quellcode:

#include<stdio.h>
#include<math.h>
int main()
{
	int i = 0;
	for (i = 0; i <= 100000; i++)
	{
		//1.计算i的位数
		int n = 1;
		int tmp = i;
		while (tmp /= 10)
		{
			n++;
		}
		//2.计算每一位的n次方之和
		tmp = i;
		int sum = 0;
		while (tmp)
		{
			sum += pow(tmp % 10, n);
			tmp /= 10;
		}
		//3.判断
		if (sum == i)
		{
			printf("%d ", i);
		}
	}
	return 0;
}

Operationsergebnis:

Lösung:

Die Lösung gliedert sich in drei Schritte:

①: Berechnen Sie die Anzahl der Ziffern in dieser Zahl: Zuerst sollten Sie Zahlen von 0 bis 100.000 haben, also verwenden Sie eine for-Schleife, um sie zu steuern . Nachdem Sie die Zahl haben, sollten Sie die Anzahl der Ziffern in jeder Zahl ermitteln. Hier: Die Division durch 10 wird wie folgt durchgeführt:

 Die Codeoperation ist wie folgt:

//1.计算i的位数
		int n = 1;
		int tmp = i;
		while (tmp /= 10)
		{
			n++;
		}

②: Berechnen Sie die Summe der n-ten Potenz (Ziffernpotenz) jeder Ziffer: Hier verwenden wir die Operation der Division von 10 durch zyklisches Modulo 10 und definieren eine variable Summe, um die Ergebnisse jedes Mal bequem zu addieren, Modulo 10, um den Tiefstwert zu erhalten Ziffer und verwenden Sie dann die Bibliotheksfunktion pow, um sie auf die n-te Potenz zu erhöhen, sie zur Summe zu addieren und schließlich das niedrigste Bit nach der Division durch 10 zu entfernen. Wiederholen Sie den Vorgang, bis er nach der Division durch 10 gleich 0 ist.

Code wie folgt anzeigen:

//2.计算每一位的n次方之和
		tmp = i;
		int sum = 0;
		while (tmp)
		{
			sum += pow(tmp % 10, n);
			tmp /= 10;
		}

③: Beurteilung: Beurteilen Sie einfach, ob die Summe gleich der Zahl i ist, und drucken Sie i aus, wenn sie gleich ist.

Code wie folgt anzeigen:

//3.判断
		if (sum == i)
		{
			printf("%d ", i);
		}

Ende des Programms

Supongo que te gusta

Origin blog.csdn.net/hffh123/article/details/132218324
Recomendado
Clasificación