J'essaie de résoudre Problem #25 on Project Euler. Voici ce que j'ai jusqu'à présent:Quel est le problème avec mon générateur de séquence Fibonacci?
def fibonacci(length):
fibs = [0,1]
while length > len(fibs):
fibs.append(fibs[-1] + fibs[-2])
return fibs
fibs = fibonacci(5000)
for i in fibs:
if len(str(i)) > 1000:
print i
## The location of the number in the Fibonacci set.
print [j for j, x in enumerate(fibs) if x == i]
Chaque numéro que je l'ai testé pour (y compris certains large ones) sort avec un match, mais le projet est Euler n'accepte pas la réponse que je reçois.
Je lis que la réponse est le numéro 4782th, mais je suis en train que le premier nombre avec plus de 1000 chiffres est le 4787e,
11867216745258291596767088485966669273798582100095758927648586619975930687764095025968215177396570693265703962438125699711941059562545194266075961811883693134762216371218311196004424123489176045121333888565534924242378605373120526670329845322631737678903926970677861161240351447136066048164999599442542656514905088616976279305745609791746515632977790194938965236778055329967326038544356209745856855159058933476416258769264398373862584107011986781891656652294354303384242672408623790331963965457196174228574314820977014549061641307451101774166736940218594168337251710513138183086237827524393177246011800953414994670315197696419455768988692973700193372678236023166645886460311356376355559165284374295661676047742503016358708348137445254264644759334748027290043966390891843744407845769620260120918661264249498568399416752809338209739872047617689422485537053988895817801983866648336679027270843804302586168051835624516823216354234081479331553304809262608491851078404280454207286577699580222132259241827433
et le projet Euler est dire chaque réponse que je l'ai essayé est faux. (Évidemment, je n'ai pas encore essayé 4782, car ce serait tricher.)
Je suis terriblement proche, et clairement quelque chose ne va pas, mais quoi?
Vous devriez revenir en arrière et relire la question. Je soupçonne qu'il vous manque seulement quelque chose de très subtil au sujet de la question posée. –
Je pense qu'il est plus rapide d'obtenir la longueur du nombre en utilisant 'math.floor (math.log10 (n)) + 1' –