Projekt Euler

Projekt Euler
Euler
Typ av webbplats
Problemlösningswebbplats för beräkningsmatematik
Skapad av Colin Hughes
URL projecteuler.net
Kommersiell Nej
Registrering Fri
Lanserades 5 oktober 2001

Project Euler (uppkallat efter Leonhard Euler ) är en webbplats tillägnad en serie beräkningsproblem som är avsedda att lösas med datorprogram. Projektet lockar akademiker och studenter som är intresserade av matematik och datorprogrammering . Sedan det skapades 2001 av Colin Hughes, har Project Euler vunnit uppmärksamhet och popularitet över hela världen. Den innehåller 800 problem den 30 maj 2022, med ett nytt till cirka varje vecka. Problem är av olika svårighetsgrad, men var och en är lösbar på mindre än en minuts CPU-tid med hjälp av en effektiv algoritm på en måttligt driven dator. Den 27 april 2021 har Project Euler mer än 1 000 000 användare som har löst minst ett problem, på över 100 olika programmeringsspråk.

Funktioner på webbplatsen

Ett forum specifikt för varje fråga kan visas efter att användaren har svarat korrekt på den givna frågan. Problem kan sorteras på ID, antal löst och svårighetsgrad. Deltagarna kan följa sina framsteg genom prestationsnivåer baserat på antalet lösta problem. En ny nivå nås för varje 25 lösta problem. Särskilda utmärkelser finns för att lösa speciella kombinationer av problem. Till exempel finns det ett pris för att lösa femtio primtalsproblem. En speciell "Eulerians"-nivå finns för att spåra prestationer baserat på de snabbaste femtio lösare av senaste problem så att nyare medlemmar kan tävla utan att lösa äldre problem.

Exempel på problem och lösningar

Det första Project Euler-problemet är multipler av 3 och 5

Om vi ​​listar alla naturliga tal under 10 som är multiplar av 3 eller 5 får vi 3, 5, 6 och 9. Summan av dessa multiplar är 23.

Hitta summan av alla multiplar av 3 eller 5 under 1000.

Även om detta problem är mycket enklare än det typiska problemet, tjänar det till att illustrera den potentiella skillnaden som en effektiv algoritm gör. Brute -force- algoritmen undersöker varje naturligt tal mindre än 1000 och håller en löpande summa av de som uppfyller kriterierna. Denna metod är enkel att implementera, vilket visas av följande pseudokod :

 
      
        
  totalt  := 0  för  NUM  från 1 till 999  gör  om  NUM  mod 3 = 0  eller  NUM  mod 5 = 0  totalt  :=  totalt  +  NUM  returnerar  totalt 

För svårare problem blir det allt viktigare att hitta en effektiv algoritm. För det här problemet kan vi reducera 1000 operationer till ett fåtal genom att använda principen för inkludering och uteslutning och en summeringsformel i sluten form .

Här betecknar summan av multiplar av under . I big O-notation är brute-force-algoritmen och den effektiva algoritmen är (förutsatt aritmetiska operationer med konstant tid).

Se även

externa länkar