Apparemment, si
[CENTER]
[/CENTER]
Est-ce que quelqu'un voit pourquoi? Merci d'avance à tous ceux qui essaieront!
# -*- coding: utf-8 -*-
# les nombres sont traités comme des suites d'exposants
import random
def randseq(r, n):
"""génère une suite de r exposants entre 0 et n"""
return [random.randint(0, n) for i in range(0, r)]
def div(L):
"""retourne la liste des diviseurs de L"""
if L == []:
return [[]]
D = div(L[1:])#appel récursif
return [[x] + X for x in range(0, L[0] + 1) for X in D]
def pgcd(L1, L2):
"""Comme son nom l'indique"""
return [min(L1[i], L2[i]) for i in range(0, len(L1))]
def prod(L1, L2):
"""produit de deux nombres"""
return [L1[i] + L2[i] for i in range(0, len(L1))]
def quot (L1, L2):
"""quotient de deux nombres"""
return [L1[i]-L2[i] for i in range(0, len(L1))]
def gen1(L, N, M):
""" genère les couples d,d'première version"""
g1 = pgcd(N, L)
A = div(g1)
B = [[X, Y] for X in A for Y in div(prod(M, quot(prod(N, L), prod(X, X))))]
return B
def gen2(L, N, M):
""" genère les couples d,d' seconde version"""
g1 = pgcd(N, M)
A = div(g1)
B = [[X, Y] for X in A for Y in div(prod(L, quot(prod(N, M), prod(X, X))))]
return B
if __name__ == "__main__":
"""programme principal"""
M = randseq(2, 3);#génration des exposants de M
N = randseq(2, 3);#génération des exposants de N
L = randseq(2, 3);#génération des exposants de L
print M
print N
print L
R1 = gen1(L, N, M)
R2 = gen2(M, N, L)
print R1
print R2
print len(R1)
print len(R2) #affiche toujours la même longueur
Diff = [X for X in R1 if X not in R2]
print Diff #affiche [] donc les deux coïncident.
# -*- coding: utf-8 -*-
# les nombres sont traités comme des suites d'exposants
import random
def randseq(r, n):
"""génère une suite de r exposants entre 0 et n"""
return [random.randint(0, n) for i in range(0, r)]
def div(L):
"""retourne la liste des diviseurs de L"""
if L == []:
return [[]]
D = div(L[1:])#appel récursif
return [[x] + X for x in range(0, L[0] + 1) for X in D]
def pgcd(L1, L2):
"""Comme son nom l'indique"""
return [min(L1[i], L2[i]) for i in range(0, len(L1))]
def prod(L1, L2):
"""produit de deux nombres"""
return [L1[i] + L2[i] for i in range(0, len(L1))]
def quot (L1, L2):
"""quotient de deux nombres"""
return [L1[i]-L2[i] for i in range(0, len(L1))]
def gen(L, N, M):
""" genère les couples d,d'première version"""
g1 = pgcd(N, L)
A = div(g1)
B = [[X, Y] for X in A for Y in div(prod(M, quot(prod(N, L), prod(X, X))))]
return B
if __name__ == "__main__":
"""programme principal"""
M = randseq(2, 3);#génération des exposants de M
N = randseq(2, 3);#génération des exposants de N
L = randseq(2, 3);#génération des exposants de L
print M
print N
print L
R1 = gen(L, N, M)
R2 = gen(M, N,L)
print len(R1)
print len(R2)
Diff = [X for X in R1 if X not in R2]
print Diff
ens:=proc(m,n,l)
local d1, d2, s:
s:=NULL:
for d1 from 1 to min(n,l) do
if irem(n,d1)=0 and irem(l,d1)=0 then
for d2 from 1 to min(m,n*l/(d1^2)) do
if irem(m,d2)=0 and irem(n*l/(d1^2),d2)=0 then
s:=s,d1*d2
fi
od
fi
od:
return(sort([s]))
end;
test:=proc(N)
local m,n,l:
for m from 1 to N do
for n from 1 to N do
for l from 1 to N do
if ens(m,n,l)ens(l,m,n) then return(m,n,l) fi
od od od:
return(true)
end;import random
FP=[2,3,5,7,11,13,17]
def convert(L):
R=[FP[i]**L[i] for i in range(0,len(L)) ]
return reduce((lambda x,y:x*y), R)
def randseq(r, n):
"""génère une suite de r exposants entre 0 et n"""
return [random.randint(0, n) for i in range(0, r)]
def div(L):
"""retourne la liste des diviseurs de L"""
if L == []:
return [[]]
D = div(L[1:])#appel récursif
return [[x] + X for x in range(0, L[0] + 1) for X in D]
def pgcd(L1, L2):
"""Comme son nom l'indique"""
return [min(L1[i], L2[i]) for i in range(0, len(L1))]
def prod(L1, L2):
"""produit de deux nombres"""
return [L1[i] + L2[i] for i in range(0, len(L1))]
def quot (L1, L2):
"""quotient de deux nombres"""
return [L1[i]-L2[i] for i in range(0, len(L1))]
def gen(L, N, M):
""" genère les couples d,d'première version"""
g1 = pgcd(N, L)
A = div(g1)
B = [[X, Y] for X in A for Y in div(pgcd(M, quot(prod(N, L), prod(X, X))))]
return B
if __name__ == "__main__":
"""programme principal"""
M = randseq(2, 3);#génération des exposants de M
N = randseq(2, 3);#génération des exposants de N
L = randseq(2, 3);#génération des exposants de L
print "N=",convert(M)
print "M=",convert(N)
print "L=",convert(L)
R1 = gen(L, N, M)
R1=[[convert(X[0]),convert(X[1])] for X in R1]
R2 = gen(M, N,L)
R2=[[convert(X[0]),convert(X[1])] for X in R2]
print "gen(L,N,M)=",R1
print "gen(M,N,L)=",R2
Diff1=[X for X in R1 if X not in R2]
Diff2=[X for X in R2 if X not in R1]
print "Diff1=",Diff1
print "Diff2=",Diff2
N= 24
M= 6
L= 12
gen(L,N,M)= [[1, 1], [1, 3], [1, 2], [1, 6], [1, 4], [1, 12], [1, 8], [1, 24], [3, 1], [3, 2], [3, 4], [3, 8], [2, 1], [2, 3], [2, 2], [2, 6], [6, 1], [6, 2]]
gen(M,N,L)= [[1, 1], [1, 3], [1, 2], [1, 6], [1, 4], [1, 12], [3, 1], [3, 2], [3, 4], [2, 1], [2, 3], [2, 2], [2, 6], [2, 4], [2, 12], [6, 1], [6, 2], [6, 4]]
Diff1= [[1, 8], [1, 24], [3, 8]]
Diff2= [[2, 4], [2, 12], [6, 4]]
print "N=",convert(M)
print "M=",convert(N)
print "L=",convert(L)
R1 = gen(L, N, M)
R1=[[convert(X[0]),convert(X[1])] for X in R1]
print "gen(L,N,M)=",R1
R1=[X[0]*X[1] for X in R1]
print "produits=",R1
R2 = gen(M, N,L)
R2=[[convert(X[0]),convert(X[1])] for X in R2]
print "gen(L,N,M)=",R2
R2=[X[0]*X[1] for X in R2]
print "produits=",R2
Diff=[X for X in R1 if X not in R2]
print Diff N= 72
M= 9
L= 6
gen(L,N,M)= [[1, 1], [1, 3], [1, 9], [1, 2], [1, 6], [1, 18], [3, 1], [3, 3], [3, 2], [3, 6]]
produits= [1, 3, 9, 2, 6, 18, 3, 9, 6, 18]
gen(L,N,M)= [[1, 1], [1, 3], [1, 2], [1, 6], [3, 1], [3, 3], [3, 2], [3, 6], [9, 1], [9, 2]]
produits= [1, 3, 2, 6, 3, 9, 6, 18, 9, 18] Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 91 invités
Tu pars déja ?
Identification
Pas encore inscrit ?
Ou identifiez-vous :