""" Součet čísel od 1 do n Napište funkci series_sum(n), která vrátí součet čísel od 1 do n. """ def series_sum(n): result = 0 # do promenne 'sum' si budeme ukladat mezisoucet for i in range(1, n + 1): # prochazime cisla od 1 do n result += i # aktualni cislo pricteme k mezisouctu return result # nakonec vratime konecny soucet print(series_sum(1)) # 1 print(series_sum(5)) # 15 print(series_sum(10)) # 55 print(series_sum(1000)) # 500500 """ 3.1.1. Faktoriál pomocí for Napište funkci factorial(n), která vrací faktoriál čísla n a využívá cyklus for. Připomeňme, že n! = 1·2·3· ... ·n a že 0! = 1. """ def factorial(n): value = 1 for i in range(1, n + 1): value *= i return value print(factorial(0)) print(factorial(1)) print(factorial(10)) print(factorial(50)) """ 3.1.2. Faktoriál pomocí while Napište funkci factorial(n), která vrací faktoriál čísla n a využívá cyklus while. """ def factorial(n): value = 1 while n > 0: value *= n n -= 1 return value print(factorial(0)) print(factorial(1)) print(factorial(10)) print(factorial(50)) """ 3.1.3. Ciferný součet Napište funkci digit_sum(n), která vrátí ciferný součet čísla n. """ def digit_sum(n): soucet = 0 while n > 0: soucet += n % 10 n = n // 10 return soucet print(digit_sum(0)) print(digit_sum(274)) print(digit_sum(123456789)) """ 3.2.1. Dělitelé Napište funkci divisors(n), která vypíše všechny dělitele čísla n. """ def divisors(n): for candidate in range(1, n + 1): if n % candidate == 0: print(candidate, end=" ") print() divisors(1) divisors(5) divisors(42) divisors(127) divisors(1024) """ 3.2.2. Počet dělitelů Napište funkci divisors_count(n), která vrátí počet dělitelů čísla n. """ def divisors_count(n): count = 0 for i in range(1, n + 1): if n % i == 0: count += 1 return count print(divisors_count(1)) print(divisors_count(5)) print(divisors_count(42)) print(divisors_count(127)) print(divisors_count(1024)) """ 3.2.3. Je prvočíslo Napište funkci is_prime(n), která vrátí True pokud je číslo n prvočíslo, jinak False. """ def divisors_count(n): count = 0 for i in range(1, n + 1): if n % i == 0: count += 1 return count def is_prime(n): return divisors_count(n) == 2 print(is_prime(1)) # False print(is_prime(2)) # True print(is_prime(3)) # True print(is_prime(42)) # False print(is_prime(127)) # True """ 3.2.4. Prvočísla menší než n Napište funkci primes_less_than(limit), která vypíše všechna prvočísla menší než limit. """ import math def is_prime(n): if n < 2: return False for i in range(2, int(math.sqrt(n)) + 1): if n % i == 0: return False return True def primes_less_than(limit): for candidate in range(limit): if is_prime(candidate): print(candidate, end=" ") print() primes_less_than(5) primes_less_than(15) primes_less_than(100) """ 3.2.12. Euklidův algoritmus Implementujte Euklidův algoritmus. """ def euclid(a, b): while a: a, b = b % a, a return b print(euclid(5, 7)) print(euclid(8, 8)) print(euclid(10, 5)) print(euclid(5, 10)) print(euclid(42, 36)) """ 3.3.1. Eulerovo číslo Napište funkci e() pro přibližný výpočet Eulerova čísla pomocí nekonečného součtu s přesností na miliontiny. """ def factorial(n): value = 1 for i in range(1, n + 1): value *= i return value def e(): result = 0 for i in range(15): result += 1 / factorial(i) return round(result, 6) print(e()) """ 3.4.1. Převod z desítkové soustavy do dvojkové Napište funkci convert_10_to_2(n), která vrátí zadané číslo n ve dvojkové soustavě jako řetězec. """ def convert_10_to_2(n): if n==0: return '' else: return convert_10_to_2(n // 2) + str(n % 2) print(convert_10_to_2(2)) print(convert_10_to_2(8)) print(convert_10_to_2(10)) print(convert_10_to_2(31)) print(convert_10_to_2(42)) """ 3.4.2. Převod z dvojkové soustavy do desítkové Napište funkci convert_2_to_10(n), která vrátí zadaný řetězec n reprezentující binární číslo v desítkové soustavě jako int. """ def convert_2_to_10(n): result = 0 power = 0 for b in n[::-1]: if b == "1": result += 2 ** power power += 1 return result print(convert_2_to_10("10")) print(convert_2_to_10("1000")) print(convert_2_to_10("1010")) print(convert_2_to_10("11111")) print(convert_2_to_10("101010"))