``` import random import time # Importing time module for timing execution def hesapla(baslangic, basamak_sayisi): # We use a set to keep track of previously seen numbers toplam_seti = set() sayi = int(baslangic) # Limit hesaplama ve sayıyı o basamağa indirgeme limit = 10 ** basamak_sayisi adim = 0 # Initial calculation sayi_str = str(sayi).zfill(basamak_sayisi) while True: sayi = sayi % limit # Reduce the number to the specified number of digits sayi_str = str(sayi).zfill(basamak_sayisi) # Pad with leading zeros # Rakamlar toplamını tekrar doğru şekilde hesapla toplam = sum(int(digit) for digit in sayi_str) # Yeni sayıyı hesapla yeni_hane = (int(sayi_str[1:]) * 10 + (toplam % 10)) % limit yeni_hane_str = str(yeni_hane).zfill(basamak_sayisi) # Döngü tespiti if yeni_hane_str in toplam_seti: return f"Döngü oluştu! Adım: {adim}, Girilen sayı {basamak_sayisi} basamaklı." toplam_seti.add(yeni_hane_str) # Add new number to the set sayi = yeni_hane # Update the current number adim += 1 # Increment the step count def get_valid_input(prompt): """Geçerli bir sayı almak için yardımcı fonksiyon""" while True: value = input(prompt) if value.isdigit() and len(value) > 0: return value print("Geçersiz giriş! Lütfen sadece rakamlardan oluşan bir sayı giriniz.") def main(): """Ana fonksiyon: Kullanıcıdan giriş alır ve işlemi başlatır.""" x = get_valid_input("Lütfen bir sayı giriniz: ") basamak_sayisi = int(get_valid_input("Kullanılacak basamak sayısını giriniz: ")) if basamak_sayisi <= 0: print("Basamak sayısı pozitif bir tamsayı olmalıdır.") return # Generate random start values based on the input number start_values = [str(int(x) + random.randint(0, 1000)) for _ in range(5)] # Random variations of the input # Track the start time for performance measurement start_time = time.time() # Run the tasks sequentially for start_value in start_values: result = hesapla(start_value, basamak_sayisi) if result: # If a cycle is detected print(result) break # Stop after the first cycle is found # Track the end time and calculate elapsed time end_time = time.time() elapsed_time = end_time - start_time print(f"Time taken: {elapsed_time:.2f} seconds") if __name__ == "__main__": main() ```