Langage C : Suite d'entiers à somme S

Bonjour à tous !

J'ai en idée d'écrire un programme en C qui prendrait deux paramètres (S, n) et retournerait une suite de n nombres entiers dont la somme serait égale à S.

Merci de bien vouloir m'aider

Réponses

  • Sans plus de précision, on peut créer un algorithme trivial qui retourne la liste $[S, 0, 0, \dots, 0]$ de taille $n$.
  • Plus compliqué mais aussi arbitraire :
    • on vérifie que $n\ge1$ ;
    • on tire $n-1$ nombres au hasard, disons $x_1,\dots,x_{n-1}$ ;
    • on calcule $x_n=S-x_1-\cdots-x_{n-1}$ ;
    • on renvoie $(x_1,\dots,x_{n-1},x_n)$.
  • Poirot écrivait : http://www.les-mathematiques.net/phorum/read.php?15,1678790,1678794#msg-1678794
    [Inutile de recopier l'avant dernier message. Un lien suffit. AD]

    Merci Poirot pour ta réponse.
    ha oui ! pas faux lol et c'est bien vu. mais voyons on peut faire mieux bien entendu :-D
  • Zut on s'est croisé...
    Math Coss écrivait : http://www.les-mathematiques.net/phorum/read.php?15,1678790,1678802#msg-1678802
    [Inutile de recopier l'avant dernier message. Un lien suffit. AD]

    C'est une bonne analyse. une boucle sur ce traitement permettrait de sortir des numéros à chaque tour...
  • A $n=1$,
    • on tire un nombre au hasard, disons $x_1$ ;
    • on calcule $S_2=S_1-x_1$ ;
    • on renvoie $x_1$.

    A $n=2$,
    • on tire un nombre au hasard, disons $x_2$ ;
    • on calcule $S_3=S_2-x_2$ ;
    • on renvoie $x_2$.
    ...
    et ainsi de suite pour trouver tous les autres nombres
    ...

    A $n=n$,
    • on tire un nombre au hasard, disons $x_n$ ;
    • on calcule $S_{n+1}=S_{n}-x_{n}=0$ ;
    • on renvoie $x_{n}$.
  • L'intérêt de cette fonction étant de remplir convenablement un rectangle magique.
    Une analogie avec une matrice à ($k$ lignes, $n$ Colonnes) dont la somme des nombres de chaque ligne $k$ donnerait le nombre $S_k$ situé à la même position dans la matrice d'arrivée. (voir ci-après)

    $$
    \begin{bmatrix}
    x_{11} & x_{12} & ... & x_{1n} \\
    x_{21} & x_{22} & ... & x_{2n} \\
    x_{31} & x_{32} & ... & x_{3n} \\
    ... & ... & ... & ...\\
    ... & ... & ... & ...\\
    x_{k1} & x_{k2} & ... & x_{kn}
    \end{bmatrix}
    =>
    \begin{bmatrix}
    S_1 \\
    S_2 \\
    S_3 \\
    ...\\
    ...\\
    S_k
    \end{bmatrix}
    $$

    avec pour restriction
    -pour tout entier $k$, $S_k$ est unique;
    -pour tout entier $n$, le $n$-plet d'entiers que forme la ligne $k$ est unique aussi.
Connectez-vous ou Inscrivez-vous pour répondre.