« Mathématiques avec Python et Ruby/Systèmes congruentiels en Python » : différence entre les versions

Contenu supprimé Contenu ajouté
Aucun résumé des modifications
Aucun résumé des modifications
Ligne 15 :
 
<source lang="python">
s2=[n for n in range(28032800,2900,2): if n%2==1]
solutions={2801}
for n in range(2803,2900,2):
solutions.add(n)
 
print(solutionslen(s2))
</source>
 
Ligne 29 ⟶ 27 :
===Épuration 3 par 3===
 
Maintenant on va construire un ensemble analogue ''ss3'' pour les nombres tels que, 3 par 3, il en reste 1, puischoisis parmi les nombres de ''solution'', ne garder que ceux qui sont aussi dans ''ss2'':
 
<source lang="python">
s3=[n for n in s2 if n%3==1]
s={2800}
for n in range(2803,2900,3):
s.add(n)
 
print(ss3)
solutions&=s
print(solutions)
</source>
 
Ligne 48 ⟶ 43 :
===Cas du nombre 4===
 
Cette fois-ci, dans ''ss4'' on met les nombres précédents tels que pris 4 par 4, il en reste 1:
 
<source lang="python">
s4=[n for n in s3 if n%4==1]
s={2801}
for n in range(2805,2900,4):
s.add(n)
 
print(solutionss4)
solutions&=s
print(solutions)
</source>
 
Ligne 70 ⟶ 62 :
 
<source lang="python">
s5=[n for n in s4 if n%5==1]
s={2801}
for n in range(2806,2900,5):
s.add(n)
 
print(solutionss5)
solutions&=s
print(solutions)
</source>
 
Ligne 89 ⟶ 78 :
 
<source lang="python">
s6=[n for n in s5 if n%6==2:1]
s={2803}
for n in range(2809,2900,6):
s.add(n)
 
print(solutionss6==s5)
solutions&=s
print(solutions)
</source>
 
Ligne 109 ⟶ 95 :
 
<source lang="python">
solutions=[n for n in s6 if n%7==0]
s={2800}
for n in range(2807,2900,7):
s.add(n)
 
print(s)
 
solutions&=s
print(solutions)
</source>
 
''s'' est assez petit:
 
<code>
{2849, 2884, 2821, 2856, 2891, 2828, 2863, 2800, 2898, 2835, 2870, 2807, 2842, 2877, 2814}
</code>
 
et les solutions qui restent sont
 
<code>
{2821}
</code>
 
Ce qui donne la réponse (on constate qu'elle est unique) à la question de l'énoncé.
 
==Sujet 2007, Exercice 3==
Ligne 148 ⟶ 120 :
'''''On demande combien il y a d'œufs en tout.'''''
 
===Par 6===
On pourrait faire comme l'exemple précédent, mais une boucle est tout de même plus rapide:
 
On commence par examiner les nombres tels que, pris 6 par 6, il en reste toujours 2:
 
<source lang="python">
s6=[n for n in range(40,200): if n%6==2]
 
if n%6==2:
print(solutionslen(s6))
if n%10==2
</source>
if n%8==0:
 
print(n)
26 nombres à examiner, courage!
 
===Par 10===
 
<source lang="python">
s10=[n for n in s6 if n%10==2]
 
print(s10)
</source>
 
Plus que 5 nombres à examiner!
 
===Par 8===
 
<source lang="python">
solutions=[n for n in s10 if n%8==0]
 
print(solutions={2801})
</source>