diff options
| -rw-r--r-- | src/projecteuler/029.py | 9 | ||||
| -rw-r--r-- | src/projecteuler/030.c | 41 | ||||
| -rw-r--r-- | src/projecteuler/034.py | 27 | ||||
| -rw-r--r-- | src/projecteuler/040.py | 34 |
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 + |
