Zahlenrätsel (Quersumme) (Schleifen)
Gesucht ist eine Zahl
- die kleiner 500.000 ist,
- deren Quersumme 43 beträgt und
- eine Quadratwurzel ist.
0 Kommentare
5 Lösung(en)
Number.prototype.digitSum = function() {
return this.toString().split('').map(Number)
.reduce(function(a, b){return a + b;});
}
let i = 1, j;
while ((j = i**2).digitSum() != 43) i++;
console.log(j < 5e5 ? `${j} = ${i}²` : 'Netrovita.');
Lösung von: Lisa Salander (Heidi-Klum-Gymnasium Bottrop)
print([i for i in range(1,500000) if sum([int(y) for y in str(i)])==43 and sqrt(i)%1==0][0])
Lösung von: rob ert (tub)
// C++ 17
#include <iostream>
#include <functional>
int main() {
std::function<int(int)> digit_sum{ [&](int n) { return n != 0 ? n % 10 + digit_sum(n / 10) : 0; } };
for (auto i{ 0 }, k{ 0 }; i < sqrt(5e5); k = ++i * i)
if(digit_sum(k) == 43) std::cout << k << "\n";
}
Lösung von: Jens Kelm (@JKooP)
// NET 6.0 | C# 10.x | VS 2022
for (int i = 0, k = 0; i < Math.Sqrt(5e5); k = ++i * i)
if (k.ToString().Select(x => x - '0').Sum() == 43) Console.WriteLine(k);
Lösung von: Jens Kelm (@JKooP)
' VBA-Funktion
Function DigitSum(n As Long) As Long
Dim r As Long
Do While n > 0
r = r + n Mod 10
n = n \ 10
Loop
DigitSum = r
End Function
Sub Main()
Dim i As Long
For i = 0 To Sqr(500000)
If DigitSum(i * i) = 43 Then Debug.Print i * i
Next
End Sub
Lösung von: Jens Kelm (@JKooP)
Verifikation/Checksumme:
499849 (707 x 707)
Aktionen
Neue Lösung hinzufügen
Bewertung
Durchschnittliche Bewertung: