summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorReiner Herrmann <reiner@reiner-h.de>2009-10-20 18:03:24 +0200
committerReiner Herrmann <reiner@reiner-h.de>2014-08-31 20:10:58 +0200
commitee4c43c85db85e0fae142656aace151dd3fb2dff (patch)
treef75f977c996b4630fa59e5cfa9cb58c70de074dc
parent00f01be61424809504f06a27fcb63b13aa3b467e (diff)
added some project euler solutions
-rw-r--r--src/projecteuler/029.py9
-rw-r--r--src/projecteuler/030.c41
-rw-r--r--src/projecteuler/034.py27
-rw-r--r--src/projecteuler/040.py34
4 files changed, 111 insertions, 0 deletions
diff --git a/src/projecteuler/029.py b/src/projecteuler/029.py
new file mode 100644
index 0000000..0740911
--- /dev/null
+++ b/src/projecteuler/029.py
@@ -0,0 +1,9 @@
+
+x = []
+
+for i in range(2, 101):
+ for j in range(2, 101):
+ x.append(i**j)
+
+print len(set(x))
+
diff --git a/src/projecteuler/030.c b/src/projecteuler/030.c
new file mode 100644
index 0000000..5d044e9
--- /dev/null
+++ b/src/projecteuler/030.c
@@ -0,0 +1,41 @@
+
+int digit_sum(int number)
+{
+ int sum = 0;
+ int digit;
+ int n = number;
+
+ while(n > 0)
+ {
+ digit = n % 10;
+ sum += digit*digit*digit*digit*digit;
+ n = n / 10;
+ }
+
+ if(number == sum)
+ return 1;
+ else
+ return 0;
+}
+
+int main()
+{
+ int start = 10;
+ int end = 354294; // 9^5 * 6
+ int sum = 0;
+ int i;
+
+ for(i=start; i<end; i++)
+ {
+ if(digit_sum(i))
+ {
+ printf("%d\n", i);
+ sum += i;
+ }
+ }
+
+ printf("\n%d\n", sum);
+
+ return 0;
+}
+
diff --git a/src/projecteuler/034.py b/src/projecteuler/034.py
new file mode 100644
index 0000000..505a987
--- /dev/null
+++ b/src/projecteuler/034.py
@@ -0,0 +1,27 @@
+def fac(limit):
+ result = 1
+ for i in range(1, limit+1):
+ result *= i
+ return result
+
+
+facs = [ fac(i) for i in range(0, 10) ]
+
+def facsum(number):
+ global facs
+ sum = 0
+ while number > 0:
+ digit = number % 10
+ sum += facs[digit]
+ number = number / 10
+ return sum
+
+
+sum = 0
+
+for i in xrange(10, 2540160):
+ if facsum(i) == i:
+ sum += i
+
+print sum
+
diff --git a/src/projecteuler/040.py b/src/projecteuler/040.py
new file mode 100644
index 0000000..6f20325
--- /dev/null
+++ b/src/projecteuler/040.py
@@ -0,0 +1,34 @@
+
+# liefert zurueck an welcher Stelle die x-stelligen Zahlen beginnen
+def begin(x):
+ stelle = 1
+ for i in range(1, x):
+ stelle += 9 * (10**(i-1)) * i
+ return stelle
+
+
+def stelle(pos):
+ n = 0
+ i = 0
+ # suche nach Anfang der x-stelligen Region in der pos liegt
+ while n <= pos:
+ i += 1
+ n = begin(i)
+
+ stellen = i-1
+ startpos = begin(stellen)
+ startvalue = 10**(stellen-1)
+ diff = pos - startpos
+ zahl = startvalue + diff/stellen
+ result = (zahl / (10**(stellen-(diff%stellen)-1))) % 10
+
+ return result
+
+
+product = 1
+
+for i in range(0, 7):
+ product *= stelle(10**i)
+
+print product
+