Bonjour !
Je fais appel à votre aide parceque je seche sur un problème paraissant pourtant simple : addition des nombres impair consécutif entre 0 et 119786.
J'ai essayer plusieurs fois mais sa me donne tout le temps '0'
Voici le bout de code que j'ai fait :
Code
For(N,0,119786)
If ent(N/2) ‡ ent((N/2)*2)
Then
K+N->K
End
Disp K
Autorisation : Membre
Nb de messages : 3767
Inscrit le : Lun 19 Oct 2009, 21:25
Posté le : Mar 23 Avr 2013, 23:04
Il manque un End. Il faut initialiser K.
Le test ent(N/2)=/=ent((N/2)*2) est faux.
Mais on peut optimiser, voir même utiliser la formule mathématique de Gauss donnant la somme d'une suite arithmétique.
Deux tests d'imparité :
ent(N/2)=/=N/2
0=/=partDéc(N/2
Le "0=/=" est facultatif. (c'est la logique booléenne qui génère 0 ou 1 et le If attend zéro comme faux et n'importe quoi d'autre comme vrai)
Code
0->K // init
For(N,1,119786
If partDéc(N/2
Then // facultatif en paire avec End
K+N->K
End // facultatif en paire avec Then
End
Disp K
Remarque importante : le dernier terme étudié sera 119785 puisque les termes sont impairs.
On aura (dernier-premier)/raison+1=(119785-1)/2+1=59893 termes.
Fonction de somme et de suite :
suite(2N-1,N,1,59893)
Formule de Gauss :
S(a,b,u)= (premier_terme+dernier_terme)*nombre_de_terme/2
=(premier_terme+dernier_terme)*((dernier-premier)/raison+1)/2
=(u(a)+u(b))*((u(b)-u(a))/(u(1)-u(0))+1)/2
S(1,119786,2n-1)=S(1,119785,2n-1)=119786*59893/2
Remarque : le calcul de la dernière ligne est toujours affiché
Code
somme(2N-1,N,1,59893
Code
119786*59893/2
EDIT 24/4/13 : grosse correction d'une confusion avec la suite de raison 1
---------------------- ti82statfr: 2008, inscrit: 2009, ti84pocketfr: noël2011, ti30xbmultiview: iut 2012-2014
Perfectionniste, manque tact. Pas le temps de tout publier depuis 2011. Répond toujours aux questions. (rédigé juin 2014)