Nach längerer Zeit endlich mal wieder eine neue Lösung, dieses Mal für das Problem 74

Auf meinem alten Laptop mit einem i3-2350M braucht das Skript nur knapp über eine Sekunde:

gcc -O3 -march=native -mtune=native -std=c11 -ffast-math Problem74.c -lm -o Problem74 && time ./Problem74
Result: 402

real	0m1,196s
user	0m1,196s
sys	0m0,000s

Und der Code dazu:

Hier meine Brute Force Lösung zu Problem 50.

Befehl zum Compilieren und Ausführen sowie die Ausgabe mit Zeitmessung:

gcc -O3 -march=native -mtune=native -std=c11 -ffast-math -fopenmp Prob50.c -lm -o Prob50 && time ./Prob50
Result: 997651 with 543 terms

real	0m2.809s
user	0m16.577s
sys	0m0.012s

Und der Code:

Hier meine Lösung zu Problem 35. Für alle Primzahlen unter 1 Mio werden die jeweiligen Permutationen untersucht. Sind diese auch alles Primzahlen handelt es sich um eine kreisförmige Primzahl (Circular Prime Number).

Output mit Geschwindigkeit:

Result: 55

real	0m0.598s
user	0m0.717s
sys	0m0.020s

und dazu der Java-Code:

Hier meine Lösung zu Problem 44 auf projecteuler.net. Dank dieser Wiki-Seite konnte man schnell eine Funktion schreiben, die prüft ob eine Zahl eine Pentagonalzahl (oder Fünfeckszahl) ist. Die Lösung habe ich wieder in C geschrieben. Mit folgendem gcc-Befehl lässt sich der Code compilieren und ausführen:

gcc -Wall -O3 -march=native -mtune=native -ffast-math -std=c11 Prob44.c -lm -o Prob44 && time ./Prob44

Das Ergebnis mit der Rechendauer sieht dann so aus:

Result found: 5482660

real	0m0.021s
user	0m0.018s
sys	0m0.004s

Und der Code schaut so aus:

Hier meine C Lösung zu Problem 5 auf projecteuler.net. Weil ich faul war habe ich einfach auf Brute Force gesetzt und alle Zahlen durchprobiert. Trotz Brute Force braucht das Programm nur 1,8 Sekunden um die Lösung zu berechnen:

gcc -Wall -O3 -march=native -mtune=native -std=c11 Prob5.c -lm -o Prob5 && time ./Prob5 
Result: 232792560

real	0m1.801s
user	0m1.800s
sys	0m0.000s

Und hier der Code:

Hier mal wieder eine weitere Project-Euler Lösung. Dieses Mal für das Problem 3 und wieder in der Programmiersprache C.

gcc -Wall -march=native -mtune=native -O3 -std=c11 -ffast-math prob3.c -lm -o prob3 && time ./prob3 
Result: 6857

real	0m0.007s
user	0m0.007s
sys	0m0.000s

Hier der Code:

Hier die Lösung in der Programmiersprache C zu Problem 493 auf projecteuler.net

Compiliert und ausgeführt wurde mit folgendem Befehl:

gcc -Wall -O3 -march=native -mtune=native -std=c11 Prob493.c -lm -o Prob493 && time ./Prob493

Als Ergbnis kommt dann folgendes heraus:

Result: 6.818741802
real	0m0.001s
user	0m0.000s
sys	0m0.000s

Der Code sieht so aus:

Als ich heute Langeweile hatte, habe ich einmal die Lösung für das Problem 6 in Bash geschrieben, weil ich ohnehin schon den ganzen Tag an verschiedenen Bash-Skripten saß. Das Ergebnis für das Problem 6 berechnet sich sehr schnell:

25164150

real	0m0.002s
user	0m0.000s
sys	0m0.002s

Der Code schaut so aus:

Hier ist mal wieder eine neue Lösung auf projecteuler.net, dieses Mal für Problem 102.

Als erstes wurden 2 Methoden erstellt. Eine für die Flächenberechnung des Dreiecks (https://en.wikipedia.org/wiki/Triangle#Using_coordinates) und eine, die prüft, ob der Ursprung im Dreieck enthalten ist.

Danach wurde nur noch die Textdatei mit den zufällig generierten Werten eingelesen und entsprechend aufgesplittet sodass das Programm die Daten nutzen kann.

Die Berechnung ging ebenfalls wieder sehr schnell:

Result: 228

real	0m0.161s
user	0m0.231s
sys	0m0.022s

Hier der Code in Java:

Heute hatte ich mal wieder etwas Zeit ein weiteres Problem auf projecteuler.net zu lösen. Gelöst habe ich dieses Mal Problem 89 in der Programmiersprache Java.

Das Problem ist dank dieser Hilfe sehr einfach: https://projecteuler.net/about=roman_numerals

Man muss also nur „DCCCC“, „LXXXX“, „VIIII“, „CCCC“, „XXXX“ und „IIII“ ersetzen. Danach muss man nur noch die Differenz der Anzahl der Zeichen vor und nach dem Replacen herausfinden.

Das Programm von mir berechnet die Lösung sehr schnell:

Result: 743

real	0m0.163s
user	0m0.170s
sys	0m0.034s

Und so schaut der Code aus:

Dieses Wochenende habe ich mich mal wieder hingesetzt und eine weiteres Problem auf projecteuler.net gelöst.

Gelöst habe ich Problem 55 in der Programmiersprache C.

Kompiliert habe ich mit folgendem Befehl:

gcc -O3 -Wall Problem55.c -lm -o Problem55

Das Ergebnis berechnet sich sehr schnell:

Result: 249
real 0m0.019s 
user 0m0.019s 
sys  0m0.000s

So schaut der Quellcode des Programms aus:

Hier meine erste Python-Lösung auf projecteuler.net für das Problem 26.

Result: 983

real	0m0.246s
user	0m0.241s
sys	0m0.004s

Hier meine Lösung zu Problem 27 auf projecteuler.net in der Programmiersprache Java.

Bei der Lösung habe ich auf brute force gesetzt. Trotzdem berechnet sich das Ergebnis recht schnell:

Result: -59231

real    0m0.316s
user    0m0.325s
sys     0m0.008s

Die Lösung zu Problem 11 habe ich ebenfalls in PHP umgesetzt.

Meiner Meinung nach war das Schwierigste an der Aufgabe sich in verschiedene Richtungen im Array zu bewegen. Wenn das klappt, berechnet sich die Lösung allerdings sehr schnell:

Result: 70600674

real	0m0.012s
user	0m0.008s
sys	0m0.004s

Hier meine Lösung zu Problem 36 auf projecteuler.net

Die Lösung für dieses Problem ließ sich extrem einfach in PHP bauen – und das Ganze läuft innerhalb von ~ 1 Sekunde:

872187
real	0m1.049s
user	0m1.048s
sys	0m0.000s