Partitions en parties distinctes
Le nombre 5 se répartit en parts distinctes de 3 façons : 5, 4+1 et 3+2. Saisissez tout entier de 0 à 5000 et obtenez le nombre exact de ses partitions en parts distinctes, quelle que soit sa taille. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- N
- 10
- Valeur
- 10
- Quantité
- 10
- Q
- 10
La fonction de partition en parties distinctes q(n) répond à une question classique de théorie des nombres : de combien de façons pouvez-vous écrire un entier non négatif n comme somme d'entiers positifs lorsque chaque somme apparaît au plus une fois et que l'ordre des termes n'importe pas ? Par exemple, 5 égale 5, 4+1 et 3+2, donc q(5) vaut trois ; 6 a quatre partitions en parties distinctes et 10 en a dix. Ce décompte diffère de la fonction de partition non restreinte p(n), qui autorise des parties répétées telles que 2+2 ou 1+1+1. Les partitions en parties distinctes apparaissent dans les identités de fonctions génératrices, dans le théorème d'Euler qui les égale aux partitions en parties impaires, dans les olympiades et dans les exercices de programmation dynamique. Cette capacité accepte un entier non négatif n et renvoie le q(n) exact sous forme de chaîne décimale calculée par programmation dynamique 0-1 en BigInt, de sorte que les valeurs au-delà des entiers sûrs restent correctes chiffre par chiffre. Un n négatif est rejeté avec une erreur de validation claire plutôt qu'un zéro silencieux ou une mauvaise réponse.
Comment les partitions en parties distinctes sont définies et comptées
Une partition d'un entier non négatif n en parties distinctes est une façon d'écrire n comme somme d'entiers positifs dans laquelle aucune partie n'est répétée et l'ordre des termes est sans importance. Par convention q(0) vaut un, en comptant la partition vide de zéro. Les valeurs classiques de manuel sont q(1)=1 (à savoir 1), q(2)=1 (à savoir 2), q(3)=2 (3 et 2+1), q(4)=2 (4 et 3+1), q(5)=3 (5, 4+1, 3+2), q(6)=4 et q(10)=10.
La fonction génératrice ordinaire de la suite est le produit infini sur k supérieur ou égal à un de un plus x à la puissance k, ce qui encode que chaque entier positif peut apparaître zéro fois ou exactement une fois comme partie.
Un algorithme pratique en logiciel est le programme dynamique classique de style sac à dos 0-1 : initialisez un tableau avec une façon de former la somme zéro, puis pour chaque taille de partie de un à n, parcourez le tableau des sommes restantes de n vers le bas jusqu'à cette taille et ajoutez les façons qui excluent la partie à celles qui l'incluent. L'ordre décroissant garantit que chaque partie est utilisée au plus une fois, de sorte que l'usage multiple non restreint n'arrive jamais.
Des objets voisins mais différents incluent les partitions non restreintes p(n), où les parties peuvent se répéter ; les compositions, où l'ordre compte ; les partitions d'ensembles comptées par les nombres de Stirling de seconde espèce ; et les partitions en parties impaires seulement, qu'Euler a prouvées équipotentes aux partitions en parties distinctes pour tout n. Cette implémentation n'utilise ni approximation flottante, ni échantillonnage Monte Carlo, ni tables externes : elle remplit un tableau unidimensionnel BigInt pour que chaque chiffre soit correct.
Le chemin est entièrement déterministe — sans graines aléatoires, horloges, réseau ni dérive de modèle —, de sorte que le même n produit toujours la même chaîne.
Où les partitions en parties distinctes apparaissent dans le travail réel
Les cours de théorie des nombres et les concours de programmation demandent constamment combien de partitions de n utilisent des sommes deux à deux distinctes, comment ce décompte se compare à p(n) non restreinte, ou si un tableau de petites valeurs correspond à l'identité d'Euler avec les partitions en parties impaires.
Les concepteurs d'algorithmes utilisent les décomptes en parties distinctes pour analyser des espaces d'états de type subset-sum 0-1, compter des combinaisons de tailles de ressource uniques totalisant un budget, ou dimensionner des tables de DP dont les dimensions suivent des tailles de partie utilisées au plus une fois.
Les leçons de combinatoire et de fonctions génératrices relient q(n) au produit de un plus x à la puissance k et aux identités restreintes de type Rogers–Ramanujan ; les enseignants listent souvent les partitions distinctes d'un petit n puis demandent le seul décompte. La préparation aux entretiens et olympiades a fréquemment besoin d'un q(n) fiable sans tables tenues à la main ni confusion avec compositions ou partitions non restreintes.
Si vous avez ensuite besoin de p(n) non restreinte, de compositions où l'ordre compte, de partitions d'ensembles via les Stirling de seconde espèce, ou d'une liste explicite de chaque partition en parties distinctes plutôt que du décompte, traitez-les comme des intentions de recherche séparées plutôt que de surcharger cette page. Gardez n dans la borne documentée pour que la latence du niveau gratuit reste prévisible, et préférez des consommateurs de chaîne pour la valeur renvoyée car q(n) finit par quitter la plage des entiers sûrs pour de grands arguments.
Cas d’usage
Devoirs et concours de théorie des nombres
Calculez q(n) exact pour des problèmes d'olympiade, des exercices de mathématiques discrètes et des clés de correction automatiques qui demandent des partitions en parties distinctes.
Contrôles en classe de l'identité d'Euler
Vérifiez des valeurs classiques telles que q(5)=3 et q(10)=10 en enseignant les fonctions génératrices ou en comparant décomptes en parties distinctes et en parties impaires.
Questions fréquentes
Qu'est-ce que la fonction de partition en parties distinctes q(n) ?
q(n) compte les façons d'écrire n comme somme d'entiers positifs lorsque aucune partie ne se répète et que l'ordre n'importe pas. Par exemple q(5)=3 et q(10)=10.
En quoi cela diffère-t-il des partitions non restreintes p(n) ?
La p(n) non restreinte autorise des parties répétées (ainsi 2+2 compte pour 4). Les partitions en parties distinctes interdisent les répétitions, donc 4 n'en a que deux : 4 et 3+1.
Que se passe-t-il si n est négatif ?
Cette calculatrice exige n ≥ 0 ; un n négatif est rejeté et n'est pas facturé.
Pourquoi la valeur est-elle une chaîne plutôt qu'un nombre ?
Les nombres de partition en parties distinctes dépassent les entiers sûrs de JavaScript pour un grand n. Les chaînes décimales gardent chaque chiffre exact.
Combien cela coûte-t-il ?
L'outil navigateur est gratuit et s'exécute en local.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/numth/distinct-partitions \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"n":10}'const res = await fetch("https://api.kit.forhosting.com/numth/distinct-partitions", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"n": 10
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/numth/distinct-partitions",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"n": 10
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/numth/distinct-partitions", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"n":10}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"n":10}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/numth/distinct-partitions", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"n": 10
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "numth.distinct_partitions",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
L'outil gratuit du navigateur et l'API payante partagent une seule fonction pure, ainsi les démonstrations en classe et les pipelines automatisés ne divergent jamais pour le même n.
Comment les partitions en parties distinctes sont définies et comptées
Les bornes déclarées maintiennent n entre zéro et cinq mille inclus, ce qui garde la latence du pire cas adaptée à un outil gratuit dans le navigateur et à un Worker léger, tout en couvrant les besoins de concours, de cours et de pipelines pour des décomptes exacts en parties distinctes.
Ce que vous envoyez et ce que vous recevez en retour
L'entier n doit se situer de zéro à cinq mille inclus. Les messages d'erreur nomment le champ fautif et la règle en échec afin que les clients de formulaire et les scripts corrigent l'entrée sans deviner. En cas de succès la réponse inclut toujours le n normalisé, value et count et q comme la même chaîne décimale exacte de q(n), et une courte formule telle que q(5) pour l'affichage. Fournissez un entier n obligatoire sous le champ n (alias number, value ou N). Les champs manquants, non entiers, décimaux et tout n négatif sont rejetés avec invalid_input et ne sont pas facturés. Contrôles d'exemple : n égal à cinq donne le décompte trois ; n égal à dix donne le décompte dix ; n égal à zéro donne le décompte un ; n égal à six donne le décompte quatre ; n égal à trois donne le décompte deux ; n égal à moins trois donne invalid_input car la fonction en parties distinctes n'est pas définie pour des arguments négatifs dans cette règle produit ; n égal à un décimal ou à une chaîne non numérique donne aussi invalid_input. Le contrat est un JSON stable, adapté aux tests unitaires, démos de cours et pipelines par lots. Le tarif des appels API réussis est la base publiée de $0.002 par élément ; les échecs de validation ne consomment pas le solde prépayé.
Où les partitions en parties distinctes apparaissent dans le travail réel
Comme cette capacité est un moteur parse pur, le tarif API est la base publiée de $0.002 par élément réussi et l'échec de validation ne consomme pas le solde.
Cas d'intégration
Analyse sac à dos 0-1 et subset-sum
Validez des fixtures de décompte en parties distinctes dans des pipelines de DP entière qui utilisent chaque taille de partie au plus une fois, sans tables flottantes.