CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

Programme décomposition facteurs premiers

Risibac
Risibac
Niveau 7
30 décembre 2016 à 20:32:02

Les kheys j'ai besoin de votre aide.

J'aimerai faire un programme pour pouvoir décomposer un nombre en facteurs de nombres premiers.

Mais je vois pas comment faire.

J'ai pensé à faire une liste regroupant tous les nombres premiers inférieurs à 100.

Puis ensuite lorsque je rentre un nombre (décomposable avec les nombres premiers inférieurs à 100) la calculette m'affiche les puissances des nombres premiers correspondant sur une liste à coté de la 1ere (pour le coup c'est un peu con car ça m'obligerait de parcourir toute la liste ce qui est une perte de temps. Mais je vois pas comment faire plus simple sans que le programme soit trop long)

Voilà en gros mon projet. Qu'en pensez-vous ? J'ai besoin de votre aide je vois pas qu'est-ce que je dois faire :(

Message édité le 30 décembre 2016 à 20:33:44 par Risibac
HighlightReel
HighlightReel
Niveau 43
30 décembre 2016 à 20:36:56

Une façon simple est de tester chacun des nombres premiers entre 3 et n/2 +1 et voir si il divise n.

Risibac
Risibac
Niveau 7
30 décembre 2016 à 20:38:41

Ouais mais au niveau du programme je rédige ça comment ?

Message édité le 30 décembre 2016 à 20:39:03 par Risibac
kiyoti
kiyoti
Niveau 10
30 décembre 2016 à 20:39:59

Casio ou Texas ?

Risibac
Risibac
Niveau 7
30 décembre 2016 à 20:42:04

Ti 82 :(

Hachino
Hachino
Niveau 23
30 décembre 2016 à 20:57:58

2 et E(sqrt(n)) si on veut pinailler jusqu'au bout.

ProfShadoko
ProfShadoko
Niveau 10
30 décembre 2016 à 20:59:55

Le 30 décembre 2016 à 20:56:26 bluepoint_ a écrit :

Le 30 décembre 2016 à 20:36:56 HighlightReel a écrit :
Une façon simple est de tester chacun des nombres premiers entre 3 et n/2 +1 et voir si il divise n.

3 et sqrt(n) plutôt non ? [[sticker:p/1kky]]

Bah non, si on prend 6, la decompo c'est 6=2*3, mais 3 c'est plus que racine de 6 :(

Risibac
Risibac
Niveau 7
30 décembre 2016 à 21:09:40

C'est quoi votre histoire de n/2 ?

GhostlnTheShell
GhostlnTheShell
Niveau 40
30 décembre 2016 à 21:10:20
  1. Oui mais au final t'en auras forcément au plus 1 qui est supérieur a sqrt(n) et du coup il est forcément premier :hap:
ProfShadoko
ProfShadoko
Niveau 10
30 décembre 2016 à 21:15:11

Le 30 décembre 2016 à 21:10:20 GhostlnTheShell a écrit :

  1. Oui mais au final t'en auras forcément au plus 1 qui est supérieur a sqrt(n) et du coup il est forcément premier :hap:

Je suis pas sur de comprendre qui designe "il" du coup je comprend pas trop la phrase [[sticker:p/1lmc]]

Dagnyr
Dagnyr
Niveau 12
30 décembre 2016 à 21:32:43

Je propose :
Une fonction avec une fonction auxiliaire récursive qui prend en argument un nombre premier p et un entier n dont les diviseurs premiers sont plus grands que p et qui renvoie sous une forme ou une autre la décomposition en nombres premiers de n.
Pour l'implémentation, on se contente de chercher le plus petit nombre premier q supérieur ou égal à p qui divise n et on fait un appel récursif aux(q,n/q).
On peut même peaufiner un peu en renvoyant que n est premier si p > sqrt(n) :hap:

Message édité le 30 décembre 2016 à 21:33:33 par Dagnyr
kiyoti
kiyoti
Niveau 10
30 décembre 2016 à 21:40:07

Voila le programme qu'on a fait en spé en langage Casio :

? -> N
While Frac(N/2) = 0
2►
N/2 -> N
WhileEnd
3 -> D
While N>1 and sqrt(N) ⩾ D
While Frac(N/D) ≠ 0
D+2 -> D
WhileEnd
D►
N/D-> N
WhileEnd

? : saisir
► : afficher
-> : prend la valeur

iDratui
iDratui
Niveau 10
30 décembre 2016 à 22:10:44

Je t'en ai fait une sous Python :

def decompo(n) :
x=n
if n==1 :
print(1)
while x!=1 :
for y in range(2,n+1) :
while x%y==0 :
x=x//y
print(y)

% : reste de la division euclidienne
// : quotient de la division euclidienne

Je ne connais pas trop le langage de la TI, mais ça me semble tout à fait faisable sur calculatrice. Après je pense pas que la complexité soit optimale mais bon osef :hap:

anaiogie
anaiogie
Niveau 10
31 décembre 2016 à 06:14:35

Le 30 décembre 2016 à 22:16:33 bluepoint_ a écrit :
Je propose aussi (des trucs a priori faisable sans trop de soucis sous TI) :
GNFS
Si n est petit, méthode naïve
Si n est moyen, Rho de Pollard
Et sinon pour gérer le cas éventuel où n est premier qui donne une mauvaise complexité, on peut faire un test genre Miller-Rabin avant

Pour n grand ben y'a le problème du nombre de chiffres significatifs sur la TI donc ça se complique

[[sticker:p/1kky]]

t'as cru il veut implementer RSA sur sa calculette?

Sous forums
  • Métiers & Orientation
  • Histoire
  • Cours et Devoirs
  • Politique
  • Environnement & Nature
  • Philosophie
La vidéo du moment