Wie erstelle ich in Mathematica eine Liste von Zahlen, deren Quersumme größergleich 5 ist?

PWolff  15.06.2020, 23:10

Kannst du den Term bitte als Quelltext formatieren, damit man die Einrückungen erkennen kann?

KleinerSkink 
Beitragsersteller
 15.06.2020, 23:35

Ist erledigt, wartet auf Bestätigung. Allerdings ist Einrücken bei Mathematica ja auch so n Ding

2 Antworten

Ich hab mir die Frage nicht ganz durchgelesen und ich hab keine Mathematica Kenntnisse

Aber beim Programmieren kannst du das durch 2 simple Schleifen machen

Eine die von 1 - 100 hoch zählt

und darin eine die deine derzeitige Zahl immer modulo 10 berechnet und die einzelnen Ziffern addiert.

Und wenn es größer gleich 5 ist am Ende dann wird es ausgegeben.

Das ist ne Sache von 5 Zeilen

Woher ich das weiß:Studium / Ausbildung – Studium Informatik / Softwaretechnik

KleinerSkink 
Beitragsersteller
 15.06.2020, 22:56

Hallo, danke für die Antwort. Das ist mit klar, in C oder VBA wäre das auch kein Problem für mich, nur Mathematica hat da seine Eigenarten, die ich nach zwei Tagen autodidaktischem Lernens noch nicht ganz nachvollziehen kann

0
PWolff  16.06.2020, 07:11

Funktionelles Programmieren ist in Mathematica zwar möglich, aber unüblich. Die Sprache scheint mir ein Lisp-Abkömmling mit alternativer Syntax zu sein; am ehesten wäre eine Lösung in Lisp übertragbar.

1
  1. Was sagt die Beschreibung zu Total zum 2. Argument? Kannst du das ", {2}" ggf. komplett weglassen?
  2. Wäre da nicht sinnvoller
Select[
  Range[100],
  ((Plus @@ IntegerDigits[#]) >= 4)&
]

oder ähnlich (ich weiß nicht mehr, wie man den Head eines Ausdrucks ersetzt)

Woher ich das weiß:Hobby – Hobby, Studium, gebe Nachhilfe

KleinerSkink 
Beitragsersteller
 16.06.2020, 16:41

Hey, ne, die zwei ist notwendig, damit Total eine Reihe, in diesem Fall den Vektor ausliest. Ansonsten würde es spaltenweise vorgehen, für den Fall, dass man eine Matrix einlesen möchte und würde die einzelnen Summen der Spalten ausgeben.
Dein Code gibts den folgenden Vektor aus:
{4, 5, 6, 7, 8, 9, 13, 14, 15, 16, 17, 18, 19, 22, 23, 24, 25, 26, \

27, 28, 29, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, \

45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, \

62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, \

79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, \

96, 97, 98, 99}

Scheinbar wird hier nur das größergleich 4 einbezogen. Weshalb die 100 verschwindet, ist mir nicht ganz klar.

0
KleinerSkink 
Beitragsersteller
 16.06.2020, 18:53

Hier die Lösung:
With[{ints = Range[100]},

 Pick[ints, Clip[Total[IntegerDigits[ints], {2}], {0, 5}], 5]]

0