Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 1) Два числа называются дружественными, если каждое из них равно сумме всех делителей второго не считая самого этого числа. Найдите все пары дружественных чисел на отрезке [a;b].
- a = 200
- b = 300
- amicable_pairs = []
- for num1 in range(a, b + 1):
- total1 = 1
- for i in range(2, int(num1 ** 0.5) + 1):
- if num1 % i == 0:
- total1 += i + num1 // i
- if total1 > num1 and total1 <= b:
- total2 = 1
- for j in range(2, int(total1 ** 0.5) + 1):
- if total1 % j == 0:
- total2 += j + total1 // j
- if total2 == num1:
- amicable_pairs.append((num1, total1))
- print(f"Пары дружественных чисел в диапазоне [{a}, {b}]: {amicable_pairs}")
- # 2) Натуральное число называется совершенным, если оно равно сумме всех своих делителей, не равных самому числу. Найдите все совершенные числа, меньшие данного натурального числа n.
- n = 10000
- perfect_numbers = []
- for num in range(2, n):
- total = 1
- for i in range(2, int(num**0.5) + 1):
- if num % i == 0:
- total += i + num // i
- if total == num:
- perfect_numbers.append(num)
- print(f"Совершенные числа, меньшие {n}: {perfect_numbers}")
- # 3) Назовем автобусный билет несчастливым, если сумма цифр его шестизначного номера делится на 13. Могут ли два идущих подряд билета оказаться несчастливыми?
- start_ticket = 123456
- next_ticket = start_ticket + 1
- sum1 = 0
- temp1 = start_ticket
- while temp1 > 0:
- sum1 += temp1 % 10
- temp1 //= 10
- sum2 = 0
- temp2 = next_ticket
- while temp2 > 0:
- sum2 += temp2 % 10
- temp2 //= 10
- result = (sum1 % 13 == 0) and (sum2 % 13 == 0)
- print("Существуют ли подряд идущие несчастливые билеты, начиная с " + str(start_ticket) + ": " + str(result))
- # 4) Найдите, сколько точек с целочисленными координатами попадает в круг радиуса r с центром в точке (x,y).
- import math
- x = 2.5
- y = 1.5
- r = 2
- count = 0
- for i in range(math.floor(x - r), math.ceil(x + r) + 1):
- for j in range(math.floor(y - r), math.ceil(y + r) + 1):
- if (i - x)**2 + (j - y)**2 <= r**2:
- count += 1
- print("Количество точек с целочисленными координатами: " + str(count))
- # 5) Вывести ряд чисел: десять десяток, девять девяток, восемь восьмерок, ... , одну единицу.
- # Найти сумму всех этих чисел.
- total_sum = 0
- for i in range(10, 0, -1):
- num = int(str(i) * i)
- print(num, end=" ")
- total_sum += num
- print("\nСумма:", total_sum)
- # 6) Из натурального числа удалить заданную цифру. Число и цифру вводить с клавиатуры.
- # Например, задано число 5683. Требуется удалить из него цифру 8. Получится число 563.
- num_str = input("Введите число: ")
- digit_str = input("Введите цифру для удаления: ")
- result_str = ""
- for char in num_str:
- if char != digit_str:
- result_str += char
- result_num = int(result_str)
- print("Результат: ", result_num)
- # 7) Написать программу, в которой вводятся два числа-операнда x и y и знак арифметической операции (+, –, /, *). Вычислить результат z в зависимости от знака.
- # Предусмотреть реакции на возможный неверный знак операции, а также на ввод y=0 при делении.
- # Организовать возможность многократных вычислений без перезагрузки программы (то есть построить цикл). В качестве символа прекращения вычислений принять '0'.
- while True:
- x = float(input("Введите x (или 0 для выхода): "))
- if x == 0:
- break
- y = float(input("Введите y: "))
- operation = input("Введите операцию (+, -, *, /): ")
- if operation == "+":
- z = x + y
- elif operation == "-":
- z = x - y
- elif operation == "*":
- z = x * y
- elif operation == "/":
- if y == 0:
- print("Ошибка: деление на ноль!")
- continue
- else:
- z = x / y
- else:
- print("Неверный знак операции!")
- continue
- print("Результат:", z)
- # 8) С клавиатуры вводятся целые числа до первого числа, которое меньше двух. Написать программу, которая определяет сколько простых чисел было введено.
- # Простые числа - это натуральные числа больше единицы, которые делятся нацело только на единицу и на себя. Например, число 3 простое, так как нацело делится только на 1 и 3. Число 4 сложное, так как нацело делится не только на 1 и 4, но также на число 2.
- count_primes = 0
- while True:
- num = int(input("Введите число (меньше 2 для выхода): "))
- if num < 2:
- break
- is_prime = True
- if num <= 1:
- is_prime = False
- else:
- for i in range(2, int(num**0.5) + 1):
- if num % i == 0:
- is_prime = False
- break
- if is_prime:
- count_primes += 1
- print("Количество введенных простых чисел:", count_primes)
- # 9) Гипотеза Сиракуз: возьмем любое натуральное число. Если оно четное - разделим его пополам, если нечетное - умножим на 3, прибавим 1 и разделим пополам. Повторим эти действия с вновь полученным числом. Гипотеза гласит, что независимо от выбора первого числа рано или поздно мы получим 1.
- # Проверить гипотезу Сиракуз для всех чисел от 20 до 30.
- for start_num in range(20, 31):
- num = start_num
- steps = 0
- while num != 1:
- if num % 2 == 0:
- num //= 2
- else:
- num = (num * 3 + 1) // 2
- steps += 1
- print(f"Число {start_num} достигло 1 за {steps} шагов")
- # 10) Требуется вывести на экран двумерную таблицу умножения.
- # Подобное реализуется с помощью двух циклов. При этом один цикл должен быть вложен в другой.
- # Для генерации случайного числа в диапазоне от a до b включительно можно использовать следующий код:
- # import random
- # x = random.randint(a, b)
- for i in range(1, 11):
- for j in range(1, 11):
- product = i * j
- print(product, end="\t")
- print()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement