Si $x^3 + 2xy = 82$ alors $x^3 \le 82$ donc $x \le 5$.
Et $2xy \le 82$ donc $y \le 82/(2x) \le 41$
N= 1000
sol1= [ [x,y] for x in range(N) for y in range(N) if x**3 + 2*x*y == 82 ]
sol1
Pas de solution du tout.
Remarque si $x^3 + 2xy = 82$ alors $x^3= 82 - 2xy$ donc $x^3$ est pair donc $x$ est pair donc $x^3 +2xy$ est divisible par 4 donc 82 est divisible par 4, absurde.
N= 100
sol2= [ [x,y] for x in range(N) for y in range(N) if x**3 + 2*x*y == 81 ]
sol2
Deux solutions.
from math import pi
N= 1000000
s= 5
approx= sum([ 1/(n**(2*s)) for n in range(1, N)]) / (pi**(2*s))
print("1/a_", s, "vaut environ", 1/approx)
$1/a_1 = 6$
$1/a_2 = 90$
$1/a_3= 945$
$1/a_4= 9450$
N= 1000
pyramide= set([ n*(n+1)*(2*n+1)//6 for n in range(1,N)])
carres= set([n**2 for n in range(1,N)])
print(pyramide.intersection(carres))
Reprenons le début :
from itertools import product
prenoms= ["Mary", "Marion", "Margie", "Hilary", "Martha"]
noms= ["Brown", "Grey", "Black", "White", "Green"]
races= ["terrier", "caniche", "dalmatien", "setter", "basset"]
chiens= ["Loopsie", "Mooksie", "Smooksie", "Poopsie", "Woopsie"]
comb= [ [p, n, r, c] for p,n,r,c in product(prenoms, noms, races, chiens)]
# réponse complète
filtre1= [ [p,n,r,c] for p,n,r,c in comb if (c in ["Loopsie", "Mooksie"]) or (not n=="Brown") ]
filtre2= [ [p,n,r,c] for p,n,r,c in filtre1 if (r!= "terrier") or (not n=="Brown") ]
filtre3= [ [p,n,r,c] for p,n,r,c in filtre2 if (c == "Woopsie") == (r == "caniche") ]
filtre4= [ [p,n,r,c] for p,n,r,c in filtre3 if p != "Mary" or not(c=="Woopsie") ]
filtre5= [ [p,n,r,c] for p,n,r,c in filtre4 if (r=="setter") == (p=="Marion") ]
filtre6= [ [p,n,r,c] for p,n,r,c in filtre5 if c!="Loopsie" or not(p=="Marion") ]
filtre7= [ [p,n,r,c] for p,n,r,c in filtre6 if (r=="basset") == (p=="Margie") ]
filtre8= [ [p,n,r,c] for p,n,r,c in filtre7 if (c in ["Smooksie", "Mooksie"]) or not(r=="basset") ]
filtre9= [ [p,n,r,c] for p,n,r,c in filtre8 if not(p=="Hilary") or not(n=="Grey") ]
filtre10=[ [p,n,r,c] for p,n,r,c in filtre9 if (c in ["Poopsie", "Smooksie"]) or not(p=="Hilary") ]
filtre11=[ [p,n,r,c] for p,n,r,c in filtre10 if (p=="Martha") == (n=="Black") ]
filtre12= [ [p,n,r,c] for p,n,r,c in filtre11 if not(r=="dalmatien") or not(p=="Martha") ]
filtre13= [ [p,n,r,c] for p,n,r,c in filtre12 if not(c=="Poopsie") or not(n=="Grey") ]
filtre14= [ [p,n,r,c] for p,n,r,c in filtre13 if (c=="Mooksie") == (n=="White") ]
filtre15= [ [p,n,r,c] for p,n,r,c in filtre14 if not(p=="Marion") or not(n=="White") ]
print(len(filtre15))
[ [p,n,r,c] for p,n,r,c in filtre15 if n=="Brown"]
On voit que Mary Brown possède un dalmatien qui s'appelle Loopsie.
filtre16= [ [p,n,r,c] for p,n,r,c in filtre15 if (p=="Mary") == (n=="Brown") ]
print(len(filtre16))
filtre17= [ [p,n,r,c] for p,n,r,c in filtre16 if (r=="dalmatien") == (c=="Loopsie") ]
print(len(filtre17))
filtre18= [ [p,n,r,c] for p,n,r,c in filtre17 if (n=="Brown") == (c=="Loopsie") ]
print(len(filtre18))
Ce dernier filtre était donc redondant, mais peu importe. Continuons :
[ [p,n,r,c] for p,n,r,c in filtre18 if n=="White"]
Donc Margie White possède un basset qui s'appelle Mooksie (puisqu'il n'y a qu'une combinaison).
filtre19= [ [p,n,r,c] for p,n,r,c in filtre18 if (n=="White") == (p=="Margie") ]
print(len(filtre19))
filtre20= [ [p,n,r,c] for p,n,r,c in filtre19 if (r=="basset") == (c=="Mooksie") ]
print(len(filtre20))
Voyons Mme Grey :
[ [p,n,r,c] for p,n,r,c in filtre20 if n=="Grey"]
Nous avons de nouvelles informations que nous injectons :
filtre21= [ [p,n,r,c] for p,n,r,c in filtre20 if (r=="setter") == (c=="Smooksie") ]
print(len(filtre21))
filtre22= [ [p,n,r,c] for p,n,r,c in filtre21 if (p=="Marion") == (n=="Grey") ]
print(len(filtre22))
Il y a encore 6 combinaisons, mais seulement 5 chiens, d'ailleurs si on regarde :
print(filtre22)
On voit deux possibilités pour Martha Black. Mais on nous posait la question pour Mme Green, et :
[ [p,n,r,c] for p,n,r,c in filtre22 if n=="Green" ]
Gagné : Hilary Green possède un terrier qui s'appelle Poopsie ("ma crotte", en anglais).