php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 06.12.2008, 20:57  
Neuer Benutzer
 
Registriert seit: 06.12.2008
Beiträge: 2
nospol ist zur Zeit noch ein unbeschriebenes Blatt
Standard Hilfe Referat

Hallo!

Ich muss nächsten Dienstag über folgenden Code einen 3-Minuten-Vortrag halten. Was würdet ihr alles erwähnen in so kurzer Zeit? Man solle nicht einfach den Code ansich erklären... Zu folgender Problemstellung musste man eine Lösung mit PHP finden:



Aufgabe:

Find the last ten digits of the series, 1^1 + 2^2 + 3^3 + ... + 1000^1000.
Example the last 10 digits of: 1^1 + 2^2 + 3^3 + ... + 10^10 --> 10405071317.



Mein Lösungscode:

<? $title = "Find the last ten digits of the series, 1<sup>1</sup> + 2<sup>2</sup> + 3<sup>3</sup> + ... + 1000<sup>1000</sup>.";
$description = "The series, 1<sup>1</sup> + 2<sup>2</sup> + 3<sup>3</sup> + ... + 1010 = 10405071317.<br/>Find the last ten digits of the series, 1<sup>1</sup> + 2<sup>2</sup> + 3<sup>3</sup> + ... + 1000<sup>1000</sup>.";


function problem48() {
$i=1;
$sum=0;

while($i<1000) {

$x=bcpow($i,$i);

$sum = bcadd($sum,$x); $i++;

$last10=substr($sum,-10);
comment(" : $last10");
}
return $last10;}

?>

Geändert von nospol (06.12.2008 um 21:04 Uhr).
nospol ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 06.12.2008, 21:21  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Benutze die [php]-Tags.

Also wenn du es nicht mal schaffst, was über diesen Code herauszufinden(was du sagen sollst/möchtest) bis Dienstag, dann lasse es mit dem Programmieren besser sein.
Außerdem solltest du deine Hausaufgaben alleine machen.
PTC ist offline  
Alt 06.12.2008, 21:25  
Erfahrener Benutzer
 
Benutzerbild von Phoscur
 
Registriert seit: 01.12.2008
Beiträge: 450
PHP-Kenntnisse:
Fortgeschritten
Phoscur wird schon bald berühmt werdenPhoscur wird schon bald berühmt werden
Standard

Ist das dein Code oder ist der Code vorgegeben?

PHP-Code:
function problem48() {
   
$sum=0# summe initialisieren
 
// while durch for ersetzt
    
for($i=1;$i<=1000;$i++) { # schleife 1 bis 1000
 
      
$x=bcpow($i,$i); # 1^1, 2^2, ... berechnen
 
      
$sum bcadd($sum,$x); # 1^1, 2^2, .. der summe hinzuaddieren
 
      // $last10 aus der schleife bewegt, muss nur einmal genommen werden
    
}
// $last10 = substr($sum,-10); direkt ins return verschoben
//comment(" : $last10"); was ist den das? kennt das Handbuch nicht
return substr($sum,-10); # die letzten 10 zeichen von der summe als string zurückgeben

Was ich nicht verstehe ist der Sinn der 10 letzten Zeichen. Wenn du herausfindest, warum du gerade die letzten 10 Zeichen nehmen sollst, bzw was die Aufgabe insgesamt bringt, das hilft das auch sicher deiner Motivation und der Vortag (3 Minuten ist seeehr wenig ;D) fällt dir leichter!


Zitat:
Zitat von PTC Beitrag anzeigen
Also wenn du es nicht mal schaffst, was über diesen Code herauszufinden(was du sagen sollst/möchtest) bis Dienstag, dann lasse es mit dem Programmieren besser sein.
Außerdem solltest du deine Hausaufgaben alleine machen.
Hat er nicht "sein Lösungscode" geschrieben? Ich verstehe das so, dass er nicht weiß wie er diesen Vortrag halten soll, bzw was er sagen soll, nicht wie er die Aufgabe lösen soll...
__________________

Geändert von Phoscur (07.12.2008 um 13:03 Uhr).
Phoscur ist offline  
Alt 06.12.2008, 21:53  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Um welches Fach und welchen Themenkreis geht es denn überhaupt?
David ist offline  
Alt 07.12.2008, 12:50  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ich bezweilfe, dass man das mit PHP so einfach rechnen kann.
Bei im Größenbereich von 1000^1000 reicht doch keine Genauigkeit irgendeines Datentypen aus, um die letzten 10 Stellen zu ermitteln.
OK. Hier sind es zwar viele Nullen, aber bei 999^999 wird es interessanter.

Das sind doch ca. 3000 Stellen. Die typischen Fließkommazahlen machen da ca. 2870 Stellen zu früh schlapp.

Wenn das ein Mathe-Problem ist, sollte vermutlich ein Weg gefunden werden, die letzten 10 Stellen zu ermitteln, der mit vorhandenen Datentypen auskommt.

Andernfalls könnte man sich mal Donald E. Knuths Ausführung zur Mathematik großer Zahlen ansehen. Da werden riesige Zahlen mit Hilfe von Arrays nachgebildet und damit gerechnet. Für ganze Zahlen wie in dem Problem hier reicht das aus.

In welchem Band seiner "Art of Computer Programming" das war, weiß ich nimmer so genau. Ist schon ein paar Jährchen her. Müsste Band 2 gewesen sein.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 07.12.2008, 12:52  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Der_Gerhard Beitrag anzeigen
Ich bezweilfe, dass man das mit PHP so einfach rechnen kann.
Bei im Größenbereich von 1000^1000 reicht doch keine Genauigkeit irgendeines Datentypen aus, um die letzten 10 Stellen zu ermitteln.
Deshalb wird ja auch bcmath verwendet.
Zitat:
Zitat von http://uk2.php.net/manual/en/book.bc.php
BCMath Arbitrary Precision Mathematics
David ist offline  
Alt 07.12.2008, 13:37  
Neuer Benutzer
 
Registriert seit: 06.12.2008
Beiträge: 2
nospol ist zur Zeit noch ein unbeschriebenes Blatt
Standard

@ david: ergänzungsfach informatik

die aufgabe war es, eine aufgabe von projecteuler.net mit hilfe php zu lösen. selbstverständlich ginge es einfacher, aber es geht ums üben mit php.

@ ptc: halt halt...es geht hier nicht darum die hausaufgaben "machen zu lassen". ich möchte mich nur informieren, dabei ist hilfe dritter durchaus angebracht.
du warst doch sicher auch mal blutiger anfänger? ich mache alles nach dem prinzip "monkey see monkey do" und wenn nichts weiterhilft --> fragen.
ich weiss schon was zu sagen, wollte nur noch weitere meinungen.

immerhin funktioniert der code und der browser gibt das resultat aus, mit kommentar der rechenschritte zum resultat.

ja eben, bcmath wird genau deshalb verwendet, da der php interpreter die zahl nicht rein numerisch ausgibt, sondern mit E = 10^. da ich die zehn letzen ziffern abschneiden will, muss die zahl aber ausgeschrieben sein.

Geändert von nospol (07.12.2008 um 13:41 Uhr).
nospol ist offline  
Alt 07.12.2008, 13:54  
Erfahrener Benutzer
 
Registriert seit: 08.11.2004
Beiträge: 2.079
Der_Gerhard ist zur Zeit noch ein unbeschriebenes Blatt
Der_Gerhard eine Nachricht über ICQ schicken
Standard

Ah so. BCMath kannte ich noch nicht. War mir im Code auch nicht gleich aufgefallen.

@Nospol: Es liegt nicht daran, dass der PHP-Interpreter die Zahl falsch ausgeben würde. Das könnte man mit number_format vermutlich halbwegs hinbiegen. Was fehlt, ist schon beim Rechnen eine annähernd ausreichende Genauigkeit der Zahlen.

@phlegma: Bei Hausaufgaben sollte man nicht nach dem Sinn fragen. Der Sinn ist meist nur, es zu tun. Egal wie sinnvoll oder sinnlos die eigentliche Aufgabe ist.

Zum Referat:
Wurde die Verwendung von bcmath vorgegeben? Wenn nicht, wäre das mal eine Gelegenheit, sich über die Genauigkeiten von Fließkommatypen auszulassen.

Der Code ist ja trivial und straight-forward abgesehen von der falschen Abbruchbedingung, die nur bis 999^999 rechnen würde.
__________________
**********************************
Nein, ich bin nicht die Signatur.
Ich putze hier nur.
**********************************
Der_Gerhard ist offline  
Alt 07.12.2008, 14:04  
PTC
Erfahrener Benutzer
 
Benutzerbild von PTC
 
Registriert seit: 27.10.2007
Beiträge: 1.708
PHP-Kenntnisse:
Anfänger
PTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nettPTC ist einfach richtig nett
Standard

Zitat:
Zitat von nospol Beitrag anzeigen
"monkey see monkey do"


Zitat:
Zitat von nospol Beitrag anzeigen
halt halt...es geht hier nicht darum die hausaufgaben "machen zu lassen". ich möchte mich nur informieren, dabei ist hilfe dritter durchaus angebracht.
Wenn es nicht so gemeint war, dann ist es in Ordnung. Für mich sah es jedenfalls nach sowas aus.
PTC ist offline  
Alt 07.12.2008, 14:05  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Zitat:
Zitat von Der_Gerhard Beitrag anzeigen
Der Code ist ja trivial und straight-forward
Wenn Du noch Stoff für den Vortrag brauchst, kann das zum Beispiel ein Thema sein. Dein Skript setzt auf schiere Rechenkraft, wohingegen Lösungen von Euler eher für Finesse stehen. Ist die immer wieder kolportierte Geschichte, über die Rechenaufgabe "Summe der Zahlen von 1 bis 100, zack fertig, während die anderen noch Minuten rechnen müssen" nicht auch auf Euler gemünzt?
David ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
[Erledigt] Hilfe: Projektabreit Informatik und Technik bitte helft uns. Off-Topic Diskussionen 31 05.04.2006 18:25
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
HILFE ! Brauche ganz dringend hilfe! PHP Tipps 2005-2 2 10.10.2005 23:08
Hilfe, Ich brauche hilfe! Kevin PHP Tipps 2005-2 2 27.09.2005 19:31
Bitte um schnelle hilfe TaStEn PHP Tipps 2005-2 1 03.09.2005 20:46
Script, welches PDF mit Hilfe von PDFlib generiert Beitragsarchiv 3 02.09.2005 15:49
Hilfe bei kleiner Funktion PHP Tipps 2005-2 1 24.08.2005 09:35
[Erledigt] Probleme mit Linkverfolgung !!! HILFE !!! PHP-Fortgeschrittene 5 20.07.2005 18:24
Suche Hilfe... :) Beitragsarchiv 1 19.07.2005 13:09
[Erledigt] VARIABLEN WERDEN NICHT RICHTIG VERARBEITET!!!! HILFE PHP Tipps 2005-2 6 02.07.2005 18:32
[Erledigt] HILFE PHP Tipps 2004-2 1 16.12.2004 20:49
[Erledigt] Chat Server mit Datenbank realisieren - - - Hilfe benötigt PHP Tipps 2004-2 3 14.12.2004 18:38
Suche -dringend- Hilfe zu einem Smily Mod! <- HiLFE - :-) PHP Tipps 2004-2 0 07.11.2004 13:50
[Erledigt] Domainnamen in Apache bekanntgeben HILFE Server, Hosting und Workstations 3 12.08.2004 13:48
Brauche Hilfe - kenne mich nicht aus - zahlen auch dafür Beitragsarchiv 1 09.08.2004 16:10

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php number_format eulersche zahl, 10405071317, referat interpreter

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:24 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum