def div(nombre_min, nombre_max): # on trouve a et b en valeur absolue a_absolu = 2 while Arithmetique.premier(a_absolu): a_absolu = abs(Arithmetique.valeur_alea(nombre_min, nombre_max)) decomposition_a_absolu = Arithmetique.factor(a_absolu) nbre_facteur_a_absolu = len(decomposition_a_absolu) decomposition_b_absolu = random.sample(decomposition_a_absolu,random.randrange(1,len(decomposition_a_absolu))) b_absolu = 1 for facteur in decomposition_b_absolu: b_absolu = b_absolu * facteur # on choisit le signe possible pour a et b a_possible = [-a_absolu , a_absolu] b_possible = [-b_absolu , b_absolu] if a_possible[1] < nombre_max: if nombre_min < a_possible[0]: a = a_possible[random.randrange(2)] else: a = a_possible[1] else: a = a_possible[0] if b_possible[1] < nombre_max: if nombre_min < b_possible[0]: b = b_possible[random.randrange(2)] else: b = b_possible[1] else: b = b_possible[0] return (a, b)
def div_dec(nombre_min, nombre_max): a = 2 while Arithmetique.premier(a): a = Arithmetique.valeur_alea(nombre_min*10, nombre_max*10) decomposition_a = Arithmetique.factor(a) nbre_facteur_a = len(decomposition_a) decomposition_b = random.sample(decomposition_a,random.randrange(1,len(decomposition_a))) b = 1 for facteur in decomposition_b: b = b * facteur return (a/10.0, b/10.0)