{}
run-icon
main.py
def collatz_sequence(n): sequence = [n] while n != 1: if n % 2 == 0: n = n // 2 else: n = 3 * n + 1 sequence.append(n) return sequence def convert_to_sti_using_6k_plus_4(sequence): sti_steps = [] for n in sequence: # Vérifie si n est de la forme 6k + 4 (valable uniquement pour les nombres pairs) if n % 2 == 0 and (n - 4) % 6 == 0: i = (n - 1) // 3 sti_steps.append(i) # On s'arrête une fois qu'on a 8 termes dans la STI if len(sti_steps) == 8: break return sti_steps def mod_16_segment(sti_sequence): mod_16_steps = [i % 16 for i in sti_sequence] segment = '-->'.join(map(str, mod_16_steps)) return segment # Fonction pour calculer x def calculate_x(i, k, b): return int((i - b) / (2 ** k)) # Exemple avec i = 2361235441021745907775 (ou un autre impair) i = 2361235441021745907775 collatz_seq = collatz_sequence(i) # Conversion des étapes de Collatz en STI via la méthode des n de forme 6k+4 sti_sequence = convert_to_sti_using_6k_plus_4(collatz_seq) # On affiche le segment des 8 premières étapes de la STI sous forme i mod 16 segment = mod_16_segment(sti_sequence) print(f"STI Sequence: {sti_sequence}") print(f"Segment (i mod 16): {segment}") # Demande à l'utilisateur de saisir k et b k = int(input("Entrer la valeur de k : ")) b = int(input("Entrer la valeur de b : ")) # Calcule x x = calculate_x(i, k, b) print(f"La valeur de x est : {x}") print(f"Votre impair secret est i = 2^{k} * {x} + ({b})")
Output