Advertisement
JmihPodvalbniy

Untitled

May 8th, 2024
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.87 KB | Software | 0 0
  1. 1) Два числа называются дружественными, если каждое из них равно сумме всех делителей второго не считая самого этого числа. Найдите все пары дружественных чисел на отрезке [a;b].
  2. a = 200
  3. b = 300
  4. amicable_pairs = []
  5.  
  6. for num1 in range(a, b + 1):
  7.     total1 = 1
  8.     for i in range(2, int(num1 ** 0.5) + 1):
  9.         if num1 % i == 0:
  10.             total1 += i + num1 // i
  11.  
  12.  
  13.     if total1 > num1 and total1 <= b:
  14.         total2 = 1
  15.         for j in range(2, int(total1 ** 0.5) + 1):
  16.             if total1 % j == 0:
  17.                 total2 += j + total1 // j
  18.  
  19.         if total2 == num1:
  20.             amicable_pairs.append((num1, total1))
  21.  
  22. print(f"Пары дружественных чисел в диапазоне [{a}, {b}]: {amicable_pairs}")
  23.  
  24. # 2) Натуральное число называется совершенным, если оно равно сумме всех своих делителей, не равных самому числу. Найдите все совершенные числа, меньшие данного натурального числа n.
  25. n = 10000
  26.  
  27. perfect_numbers = []
  28. for num in range(2, n):
  29.     total = 1
  30.     for i in range(2, int(num**0.5) + 1):
  31.         if num % i == 0:
  32.             total += i + num // i
  33.     if total == num:
  34.         perfect_numbers.append(num)
  35.  
  36. print(f"Совершенные числа, меньшие {n}: {perfect_numbers}")
  37.  
  38. # 3) Назовем автобусный билет несчастливым, если сумма цифр его шестизначного номера делится на 13. Могут ли два идущих подряд билета оказаться несчастливыми?
  39. start_ticket = 123456
  40.  
  41. next_ticket = start_ticket + 1
  42.  
  43. sum1 = 0
  44. temp1 = start_ticket
  45. while temp1 > 0:
  46.     sum1 += temp1 % 10
  47.     temp1 //= 10
  48.  
  49. sum2 = 0
  50. temp2 = next_ticket
  51. while temp2 > 0:
  52.     sum2 += temp2 % 10
  53.     temp2 //= 10
  54.  
  55. result = (sum1 % 13 == 0) and (sum2 % 13 == 0)
  56.  
  57. print("Существуют ли подряд идущие несчастливые билеты, начиная с " + str(start_ticket) + ": " + str(result))
  58.  
  59. # 4) Найдите, сколько точек с целочисленными координатами попадает в круг радиуса r с центром в точке (x,y).
  60. import math
  61.  
  62. x = 2.5
  63. y = 1.5
  64. r = 2
  65.  
  66. count = 0
  67.  
  68. for i in range(math.floor(x - r), math.ceil(x + r) + 1):
  69.    
  70.     for j in range(math.floor(y - r), math.ceil(y + r) + 1):
  71.  
  72.         if (i - x)**2 + (j - y)**2 <= r**2:
  73.             count += 1
  74.  
  75. print("Количество точек с целочисленными координатами: " + str(count))
  76.  
  77. # 5) Вывести ряд чисел: десять десяток, девять девяток, восемь восьмерок, ... , одну единицу.
  78. # Найти сумму всех этих чисел.
  79. total_sum = 0
  80.  
  81. for i in range(10, 0, -1):
  82.     num = int(str(i) * i)
  83.     print(num, end=" ")
  84.     total_sum += num
  85.  
  86. print("\nСумма:", total_sum)
  87.  
  88. # 6) Из натурального числа удалить заданную цифру. Число и цифру вводить с клавиатуры.
  89. # Например, задано число 5683. Требуется удалить из него цифру 8. Получится число 563.
  90. num_str = input("Введите число: ")
  91. digit_str = input("Введите цифру для удаления: ")
  92.  
  93. result_str = ""
  94. for char in num_str:
  95.     if char != digit_str:
  96.         result_str += char
  97.  
  98. result_num = int(result_str)
  99.  
  100. print("Результат: ", result_num)
  101.  
  102. # 7) Написать программу, в которой вводятся два числа-операнда x и y и знак арифметической операции (+, –, /, *). Вычислить результат z в зависимости от знака.
  103. # Предусмотреть реакции на возможный неверный знак операции, а также на ввод y=0 при делении.
  104. # Организовать возможность многократных вычислений без перезагрузки программы (то есть построить цикл). В качестве символа прекращения вычислений принять '0'.
  105. while True:
  106.     x = float(input("Введите x (или 0 для выхода): "))
  107.     if x == 0:
  108.         break
  109.  
  110.     y = float(input("Введите y: "))
  111.     operation = input("Введите операцию (+, -, *, /): ")
  112.  
  113.     if operation == "+":
  114.         z = x + y
  115.     elif operation == "-":
  116.         z = x - y
  117.     elif operation == "*":
  118.         z = x * y
  119.     elif operation == "/":
  120.         if y == 0:
  121.             print("Ошибка: деление на ноль!")
  122.             continue
  123.         else:
  124.             z = x / y
  125.     else:
  126.         print("Неверный знак операции!")
  127.         continue
  128.  
  129.     print("Результат:", z)
  130.  
  131. # 8) С клавиатуры вводятся целые числа до первого числа, которое меньше двух. Написать программу, которая определяет сколько простых чисел было введено.
  132. # Простые числа - это натуральные числа больше единицы, которые делятся нацело только на единицу и на себя. Например, число 3 простое, так как нацело делится только на 1 и 3. Число 4 сложное, так как нацело делится не только на 1 и 4, но также на число 2.
  133. count_primes = 0
  134.  
  135. while True:
  136.     num = int(input("Введите число (меньше 2 для выхода): "))
  137.     if num < 2:
  138.         break
  139.  
  140.     is_prime = True
  141.     if num <= 1:
  142.         is_prime = False
  143.     else:
  144.         for i in range(2, int(num**0.5) + 1):
  145.             if num % i == 0:
  146.                 is_prime = False
  147.                 break
  148.  
  149.     if is_prime:
  150.         count_primes += 1
  151.  
  152. print("Количество введенных простых чисел:", count_primes)
  153.  
  154. # 9) Гипотеза Сиракуз: возьмем любое натуральное число. Если оно четное - разделим его пополам, если нечетное - умножим на 3, прибавим 1 и разделим пополам. Повторим эти действия с вновь полученным числом. Гипотеза гласит, что независимо от выбора первого числа рано или поздно мы получим 1.
  155. # Проверить гипотезу Сиракуз для всех чисел от 20 до 30.
  156. for start_num in range(20, 31):
  157.     num = start_num
  158.     steps = 0
  159.     while num != 1:
  160.         if num % 2 == 0:
  161.             num //= 2
  162.         else:
  163.             num = (num * 3 + 1) // 2
  164.         steps += 1
  165.     print(f"Число {start_num} достигло 1 за {steps} шагов")
  166.  
  167. # 10) Требуется вывести на экран двумерную таблицу умножения.
  168. # Подобное реализуется с помощью двух циклов. При этом один цикл должен быть вложен в другой.
  169. # Для генерации случайного числа в диапазоне от a до b включительно можно использовать следующий код:
  170. # import random
  171. # x = random.randint(a, b)
  172. for i in range(1, 11):
  173.  
  174.     for j in range(1, 11):
  175.         product = i * j
  176.         print(product, end="\t")
  177.        
  178.     print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement