Spé maths DM
Réponses à toutes vos questions de la 2nde à la Terminale toutes séries
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 16:19
Bonjour tout le monde, alors voilà mon DM :
a et b sont deux entiers naturels tels que a^2-2b^2=1
1. Démontrer:
a) Les entiers a et b sont premiers entre eux
b) a est impair
c) b est pair
2. Ecrire un algorithme puis un programme permettant de déterminer les couples d'entiers inférieurs à 100 vérifiant (1.)
J'ai réussi les 3 premières questions seulement je bloque pour la 2ème parce que mon programme ne fonctionne pas, j'aurai besoin d'aide merci d'avance.
-
siger
- Membre Complexe
- Messages: 2705
- Enregistré le: 16 Fév 2013, 20:56
-
par siger » 31 Oct 2016, 16:37
bonjour
donne nous ton programme .......
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 17:03
A prend la valeur -1
B prend la valeur -2
Pour I allant de 0 à 49,
A prend la valeur A+2
Pour F allant de 0 à 49,
B prend la valeur B+2
Si A^2-2B^2=1
Afficher A,B
Fin Si
Fin Pour
Fin Pour
Fin programme
Donc ça c'est l'algorithme auquel j'ai pensé mais quand je le rentre dans la calculatrice ça ne fonctionne pas, j'aimerai bien comprendre pourquoi...
-
zygomatique
- Habitué(e)
- Messages: 6928
- Enregistré le: 20 Mar 2014, 13:31
-
par zygomatique » 31 Oct 2016, 19:35
salut
cet algo est correct ... enfin il semble ... mais on peut faire bien plus efficace ...
donc si ça ne marche pas avec ta calculatrice c'est qu'il y a un pb de traduction ...
mais pour voir ce qui ne va pas il nous faut ton programme ...
Ce qui est affirmé sans preuve peut être nié sans preuve. EUCLIDE
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 19:50
Mon programme est comme ça:
-1-->A
-2-->B
For(I,0,49)
A+2-->A
For(F,0,49)
B+2-->B
If A^2-2B^2=1
Then
Disp A,B
End
End
End
-
Pseuda
- Habitué(e)
- Messages: 3222
- Enregistré le: 08 Avr 2015, 13:44
-
par Pseuda » 31 Oct 2016, 20:06
Bonsoir,
En quoi il ne marche pas ? Il n'affiche rien, il boucle, ou il affiche des résultats faux ?
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 20:14
Il m'affiche le premier résultat qui est 1;0 est me dit (après un long chargement) "Done" Alors que je sais qu'il y a 4 couples solutions
-
Pseuda
- Habitué(e)
- Messages: 3222
- Enregistré le: 08 Avr 2015, 13:44
-
par Pseuda » 31 Oct 2016, 20:19
Ok. A quoi est égal B à la fin de sa 1ère boucle (quand A passe de 1 à 3) ?
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 20:20
Et bien 0 pourquoi ? Enfin je l'ai fait de tête, je dois le demander à la calculatrice ?
-
Pseuda
- Habitué(e)
- Messages: 3222
- Enregistré le: 08 Avr 2015, 13:44
-
par Pseuda » 31 Oct 2016, 20:22
Non, il est parti de -1 et a fait 50 pas de 2, il est égal à 99.... et il y reste.
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 20:24
Comment pourrais-je modifier cela ...? Parce que j'ai bien mis -2-->B au départ et pourquoi il y reste ? Merci pour ton aide
-
Pseuda
- Habitué(e)
- Messages: 3222
- Enregistré le: 08 Avr 2015, 13:44
-
par Pseuda » 31 Oct 2016, 20:28
Parce que dans ton programme, le -2 -> B n'est pas dans la boucle de A. C'est-à-dire que B n'est pas réinitialisé à chaque fois que A augmente de 2.
Conclusion : il faut mettre cette instruction dans la boucle de A.
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 20:30
C'est bon je venais de trouver, merci pour ton aide Pseuda! Zygomatique parlait d'une méthode plus simple, s'il y en a une, j'aimerai bien la savoir ou tout du moins avoir un petit indice pour la trouver...?
-
Pseuda
- Habitué(e)
- Messages: 3222
- Enregistré le: 08 Avr 2015, 13:44
-
par Pseuda » 31 Oct 2016, 20:33
Avec a² - 2 b² = 1, est-ce que c'est la peine de dérouler b de 0 à 100, avec a = 1 par exemple ? Comment sont a et b l'un par rapport à l'autre ?
Il voulait certainement dire que tu peux optimiser le programme.
Par ailleurs, es-tu sûr que ton programme déroule a et b jusqu'à 100 ?
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 20:39
Je devrai alors rajouter une condition pour dire au programme de passer directement à la suite ?
Mon programme ne déroule A que jusque 99 et B jusque 98, l'énoncé précise inférieurs à 100, je devrais le changer?
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 20:47
C'est bon j'ai rajouté un tant que A>B juste après le début de la deuxième boucle, ça va un peu plus vite.
-
Pseuda
- Habitué(e)
- Messages: 3222
- Enregistré le: 08 Avr 2015, 13:44
-
par Pseuda » 31 Oct 2016, 20:47
On a : a > b. Il faudrait modifier complétement le programme.
Par exemple, ne faire qu'une boucle pour B, et calculer A tel que A² = 2 B² + 1, et voir si A est comment ?? Et s'arrêter quand B atteint ??
-
zygomatique
- Habitué(e)
- Messages: 6928
- Enregistré le: 20 Mar 2014, 13:31
-
par zygomatique » 31 Oct 2016, 20:55
puisque tu fais deux boucles autant les faire sur A et B ce qui évitera cette erreur
- Code: Tout sélectionner
For a = 1 To 99 step 2
For b = 0 To 100 step 2
If a^2 - 2b^2 = 1 Then Write a, b
et c'est fini
on fait évidemment en gros 50 * 50 opérations
un programme très optimisé serait :
- Code: Tout sélectionner
For b = 0 To 100 step 2
a = sqrt(1 + 2b^2)
If a = E(a) Then Write a, b
qui ne fait que 50 opérations
E(a) = partie entière de a
Ce qui est affirmé sans preuve peut être nié sans preuve. EUCLIDE
-
mathematixe
- Membre Naturel
- Messages: 59
- Enregistré le: 03 Sep 2016, 22:03
-
par mathematixe » 31 Oct 2016, 21:14
Ouaaah!! Votre programme est génial, jamais je n'y aurai pensé tout seul... Merci beaucoup à vous.
-
Ben314
- Le Ben
- Messages: 21535
- Enregistré le: 11 Nov 2009, 22:53
-
par Ben314 » 01 Nov 2016, 00:42
Une autre solution :
- Code: Tout sélectionner
a=1 ; b=0;
while (a<=100)
Print a, b
Temp=3*a+4*b; b=2*a+3*b; a=Temp;
Sauf que, sans moultes question intermédiaires, je suis pas sûr que ce soit bien immédiat au niveau Lycée.
Qui n'entend qu'un son n'entend qu'une sonnerie. Signé : Sonfucius
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 89 invités