y a-t-il un moyen de faire la somme des nombres impairs de 1 à n mais sans aucune boucle et s'il n'y a pas de moyen, comment puis-je créer cela par un algorithme rapide pour effectuer cette tâche en moins de n boucles.
3 Réponses :
Essaye ça -
sum(range(1, n+1, 2))
Vous pouvez profiter de la sommation dans une série arithmétique pour additionner les n
premiers nombres impairs (pas les nombres impairs de 0
à n
)
if n % 2 == 0: n = n - 1 # to eliminate the case 10000 and find range 1-9999
Complexité temporelle: O (1), pas de boucle
reference: Sommation d'une série arithmétique
edit: pour adapter la casse pour n
pair, par exemple 10000
a = 1 # from 1 n = 9999 # to n d = 2 # and skip every even number n = int((n - a) / d + 1) # locate the number of term for n sum = int((n / 2) * (2 * a + (n - 1) * d))
Cela devrait être la bonne réponse! J'étais tellement sur l'esprit de programmation que j'ai oublié ce que sont les mathématiques ... 🤦🏽♂️
Notez que si n = 2k+1
, le résultat est (k+1)^2
(+1)
Je pense que la question est de trouver la somme des cotes entre 1
et n
, donc n
peut être pair. Je suggérerais de modifier la réponse en tenant compte de cela.
@MuslimbekAbduganiev Merci pour le rappel!
Vous pouvez essayer celui ci-dessous, qui passe de 1 à n, en passant par 2
sum(range(1,n,2))
Veuillez mettre à jour votre question avec le code que vous avez essayé.
Voir ce stackoverflow.com/q/37126522/3365922