π ΠΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ python: 5 ΠΏΡΠΎΡΡΡΡ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ²
ΠΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π² Python
ΠΠ»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π² Python ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
def find_divisors(num):
divisors = []
for i in range(1, int(num ** 0.5) + 1):
if num % i == 0:
divisors.append(i)
if i != num // i:
divisors.append(num // i)
divisors.sort()
return divisors
num = 36
divisors = find_divisors(num)
print(divisors)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ find_divisors, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ num ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΎΡΠ½ΠΎΠ²Π°Π½ Π½Π° ΡΠΎΠΌ, ΡΡΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π° ΠΏΠ°ΡΠ½ΡΠ΅, ΡΠΎ Π΅ΡΡΡ ΠΎΠ΄ΠΈΠ½ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π²ΡΠ΅Π³Π΄Π° Π±ΡΠ΄Π΅Ρ ΠΌΠ΅Π½ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π΅Π½ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΊΠΎΡΠ½Ρ ΡΠΈΡΠ»Π°, Π° Π²ΡΠΎΡΠΎΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠ΅ ΠΈΠ»ΠΈ ΡΠ°Π²Π΅Π½ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠΌΡ ΠΊΠΎΡΠ½Ρ ΡΠΈΡΠ»Π°. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΡΠΈΡΠ»Π° ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΎΠ±Π° Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π² ΡΠΏΠΈΡΠΎΠΊ.
ΠΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° ΡΠΏΠΈΡΠΊΠ°:
def find_divisors(num):
return [i for i in range(1, int(num ** 0.5) + 1) if num % i == 0]
num = 36
divisors = find_divisors(num)
print(divisors)
ΠΠ±Π° ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈΠΌΠ΅ΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΡ O(sqrt(n)), ΡΡΠΎ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ.
ΠΠ΅ΡΠ°Π»ΡΠ½ΡΠΉ ΠΎΡΠ²Π΅Ρ
ΠΠ°ΠΊ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠΎΠΈΡΠΊ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π² Python?
ΠΠΎΠΈΡΠΊ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΈΡΠ»Π° - ΠΎΠ΄Π½Π° ΠΈΠ· Π±Π°Π·ΠΎΠ²ΡΡ Π·Π°Π΄Π°Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ. Π ΡΠ·ΡΠΊΠ΅ Python Π΅ΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΡ Π·Π°Π΄Π°ΡΡ. ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΠ΄Π°.
1. ΠΡΠΎΡΡΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΠΎΡΡΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ N ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ°, Π΄Π΅Π»ΠΈΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ Π½Π°ΡΠ΅Π»ΠΎ Π½Π° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌΡΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ. ΠΠ»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡ Π΄ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΡΠΈΡΠ»Π° N, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π±ΡΠ΄ΡΡ ΡΠ²Π»ΡΡΡΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π° ΡΠΆΠ΅ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ.
def find_divisors(n):
divisors = []
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
divisors.append(i)
if i != n // i: # ΠΡΠ»ΠΈ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠΌ ΡΠΈΡΠ»Π°, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ ΠΈ Π΅Π³ΠΎ
divisors.append(n // i)
return divisors
n = 36
divisors = find_divisors(n)
print(divisors)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ find_divisors
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ n
ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ Π΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» for
Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠ° ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΠΈΠ· n
. ΠΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π΄Π΅Π»ΠΈΡ ΡΠΈΡΠ»ΠΎ Π½Π°ΡΠ΅Π»ΠΎ, ΠΌΡ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ Π² ΡΠΏΠΈΡΠΎΠΊ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ. ΠΠ°ΡΠ΅ΠΌ ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΊΠ²Π°Π΄ΡΠ°ΡΠΎΠΌ ΡΠΈΡΠ»Π°, ΠΈ Π΅ΡΠ»ΠΈ ΡΡΠΎ ΡΠ°ΠΊ, ΡΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π΅Π³ΠΎ ΠΈ Π²ΡΠΎΡΠΎΠΉ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ Π² ΡΠΏΠΈΡΠΎΠΊ.
2. ΠΠ΅ΡΠ΅Π±ΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΡ ΡΠΈΡΠ΅Π»
ΠΡΠ»ΠΈ ΠΌΡ ΠΈΡΠ΅ΠΌ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ Π½Π΅ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π°, ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΡΡΡΡ ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΡ
ΡΠΈΡΠ΅Π» ΠΎΡ 1 Π΄ΠΎ n
. ΠΡΠΎ ΡΠΌΠ΅Π½ΡΡΠΈΡ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΠΈ ΠΏΠΎΠ²ΡΡΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
def find_divisors_odd(n):
divisors = []
for i in range(1, int(n**0.5) + 1, 2):
if n % i == 0:
divisors.append(i)
if i != n // i:
divisors.append(n // i)
return divisors
n = 37
divisors = find_divisors_odd(n)
print(divisors)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ find_divisors_odd
, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠ΅ΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ, Π½ΠΎ ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π½Π΅ΡΠ΅ΡΠ½ΡΠ΅ ΡΠΈΡΠ»Π° ΠΎΡ 1 Π΄ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΠΈΠ· n
. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π°ΠΌ ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΠΈ ΡΠ»ΡΡΡΠΈΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ.
3. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠΈΡΠ»Π°
ΠΡΠ»ΠΈ ΠΌΡ ΡΠ°Π±ΠΎΡΠ°Π΅ΠΌ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΈΠΌΠ΅Π΅ΠΌ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΈΡ ΠΌΠ°ΡΠ΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌ, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π·Π½Π°Π½ΠΈΡ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΏΡΠΎΡΡΡΡ ΡΠΈΡΠ΅Π» Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π΄ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΠΈΠ· ΡΠΈΡΠ»Π°. ΠΡΠ»ΠΈ Π΄Π΅Π»ΠΈΡΠ΅Π»ΠΈ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Ρ Π΄ΠΎ ΡΡΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ°, ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ Π·Π°ΠΊΠ»ΡΡΠΈΡΡ, ΡΡΠΎ ΡΠΈΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎΠ΅.
import math
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
n = 37
if is_prime(n):
print(f"{n} - ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΈΡΠ»ΠΎ")
else:
print(f"{n} - Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ")
divisors = find_divisors(n)
print(divisors)
Π ΡΡΠΎΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ ΠΌΡ ΡΠΎΠ·Π΄Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ is_prime
, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ n
ΠΏΡΠΎΡΡΡΠΌ. ΠΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠΈΠΊΠ» for
Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ ΠΎΡ 2 Π΄ΠΎ ΠΊΠ²Π°Π΄ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΡΠ½Ρ ΠΈΠ· n
. ΠΡΠ»ΠΈ Π½Π°Ρ
ΠΎΠ΄ΠΈΠΌ Π΄Π΅Π»ΠΈΡΠ΅Π»Ρ, ΡΠΎ ΡΠΈΡΠ»ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ False
. ΠΡΠ»ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΠΏΡΠΎΡ
ΠΎΠ΄ΠΈΡ Π±Π΅Π· Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΠΌ True
.
Π ΠΈΡΠΎΠ³Π΅, ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΡΠΈΡΠ»ΠΎ n
ΠΏΡΠΎΡΡΡΠΌ, ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΠΌ ΡΠΏΠΈΡΠΎΠΊ Π΅Π³ΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ, Π΅ΡΠ»ΠΈ ΠΎΠ½ΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΡΠΌ.
ΠΠΎΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠΏΠΎΡΠΎΠ±ΠΎΠ² ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠΈΡΠΊΠ° Π΄Π΅Π»ΠΈΡΠ΅Π»Π΅ΠΉ Π² Python. ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ Π²Π°ΡΠ΅ΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΉ.