Algo décomposition en somme de puissances
dans Arithmétique
Bonjour,
Je débute en Python, j'ai voulu écrire un programme qui me permette de décomposer un entier $n$ en sommes d'exactement $k$ puissances $p$-ièmes d'entiers.
Je suis preneur de toutes améliorations.
Merci.
Gilles
Je débute en Python, j'ai voulu écrire un programme qui me permette de décomposer un entier $n$ en sommes d'exactement $k$ puissances $p$-ièmes d'entiers.
Je suis preneur de toutes améliorations.
Merci.
Gilles
def tri(L): L=[tuple(sorted(k)) for k in L] L=list(set(L)) L.sort() L=[list(k) for k in L] return(L) def sommespuissances(n,p,k): C=[j**p for j in range(0,n+1) if j**p<=n] if k==1: if n in C: return([[len(C)-1]]) else: return([[]]) else: L=[] for j in C: if j<=n//k: M=sommespuissances(n-j,p,k-1) if M!=[[]]: for m in M: m.insert(0,C.index(j)) L.append(m) return(tri(L))
Réponses
-
Quelques pistes :
- sorted renvoie déjà un tuple mais c’est un détail.
- C n’est pas du tout optimisé, imagine si n est grand. Utilise un while ou n**(1/p) pour borner.
- si M==[[]], tu peux renvoyer [[]] tout de suite.
Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Bonjour
- Tu es sûr ? Si je fais sorted sur une liste, j'ai une liste en sortie.
- Merci, c'est ce qui ralentissait considérablement mon programme.
- Je ne peux pas faire ce que tu dis (return([[]])) car il se peut que décomposition fonctionne pour une valeur suivante de $j$
-
En revanche ce qui ne sert à rien c'est de faire M=[[]] alors que M=[] suffit.
def sommespuissances(n,p,k): C,j=[],0 while j**p<=n: C.append(j**p) j=j+1 if k==1: if n in C: return([[len(C)-1]]) else: return([]) else: L=[] for j in C: if j<=n//k: M=sommespuissances(n-j,p,k-1) for m in M: m.insert(0,C.index(j)) L.append(m) return(tri(L))
-
Tu voulais peut-être plusieurs décompositions ?Algebraic symbols are used when you do not know what you are talking about.
-- Schnoebelen, Philippe -
Oui je veux afficher toutes les décompositions une seule fois, rangées par ordre lexicographique, d'où ma fonction "tri".
Connectez-vous ou Inscrivez-vous pour répondre.
Bonjour!
Catégories
- 163.1K Toutes les catégories
- 7 Collège/Lycée
- 21.9K Algèbre
- 37.1K Analyse
- 6.2K Arithmétique
- 52 Catégories et structures
- 1K Combinatoire et Graphes
- 11 Sciences des données
- 5K Concours et Examens
- 11 CultureMath
- 47 Enseignement à distance
- 2.9K Fondements et Logique
- 10.3K Géométrie
- 62 Géométrie différentielle
- 1.1K Histoire des Mathématiques
- 68 Informatique théorique
- 3.8K LaTeX
- 39K Les-mathématiques
- 3.5K Livres, articles, revues, (...)
- 2.7K Logiciels pour les mathématiques
- 24 Mathématiques et finance
- 312 Mathématiques et Physique
- 4.9K Mathématiques et Société
- 3.3K Pédagogie, enseignement, orientation
- 10K Probabilités, théorie de la mesure
- 772 Shtam
- 4.2K Statistiques
- 3.7K Topologie
- 1.4K Vie du Forum et de ses membres