Har använt mig utav Internet för att försöka lära mig att programmera, och har nyss kommit in på det här med for-loopar, och har nyss kommit över en uppgift jag ej förstår mig på.
"Enligt legenden fick schackspelets uppfinnare, storvisir Sissa Ben Dahir, önska sig en belöning av kung Shirham av Indien. Den listige Sissa Ben Dahir bad då att få ett vetekorn för den första schackrutan, två för den andra rutan, fyra för den tredje rutan, åtta för den fjärde rutan osv. Hur mycket vete fick han?
Då man startar med ett kort och sedan multiplicerar med två för varje ruta skulle man kunna tänka sig en loop som går lagom många varv och just multiplicerar en variabel med två varje gång. Var dock beredd på att talet blir stort.
Beroende på vilket programmeringsspråk du använder så kan det vara väldigt viktigt att se till att variabeln har en typ som tillåter ett tillräckligt stort heltalsvärde.
Som dEnnA skrev så är svaret 2^64 - 1, så det får precis plats i ett 64-bit heltalsvärde utan teckenbit, vilket i t.ex. C# är ulong. Det får däremot inte plats i en variabel med typen int, uint eller long.
Du kan också se det som att varje term i summan är ett binärt tal med bara en bit satt (2^x), och summan blir då det binära talet med 64st ettor efter varandra. Det talet är ett mindre än talet med en etta och 64st nollor efter, vilket är 2^64.
Ett exempel fast med färre bitar:
2^0 + 2^1 + 2^2 + 2^3 = 1111b = 10000b - 1 = 2^4 - 1 = 15