##### IB111 skupina 10 ##### ##### cvičení 03 ### JEDNODUCHÉ VÝPOČTY # ÚKOL 1 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. >>> print(factorial(0)) 1 >>> print(factorial(1)) 1 >>> print(factorial(10)) 3628800 >>> print(factorial(50)) 30414093201713378043612608166064768844377641568960512000000000000 # ÚKOL 2 Přepište funkci factorial(n) tak, aby využívala cyklus while. # ÚKOL 3 Napište funkci repeated_digit_sum(n), která vypočítá ciferný součet čísla n. Ze získaného ciferného součtu opět vypočítá ciferný součet a tento postup opakuje dokud nezbude jednociferné číslo, které vrátí. Své řešení rozložte do dvou funkcí. >>> print(repeated_digit_sum(123)) 6 >>> print(repeated_digit_sum(123456789)) 9 >>> print(repeated_digit_sum(99989788879879)) 7 ### DĚLITELNOST A PRVOČÍSLA # ÚKOL 4 Napište funkci divisors_count(n), která vrátí počet dělitelů čísla n. >>> print(divisors_count(1)) 1 >>> print(divisors_count(5)) 2 >>> print(divisors_count(42)) 8 >>> print(divisors_count(127)) 2 >>> print(divisors_count(1024)) 11 # ÚKOL 5 Napište funkci is_prime(n), která vrátí True pokud je číslo n prvočíslo, jinak False. >>> 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 # ÚKOL 6 Napište funkci primes(count), která vypíše prvních count prvočísel. >>> primes(2) 2 3 >>> primes(5) 2 3 5 7 11 >>> primes(10) 2 3 5 7 11 13 17 19 23 29 # ÚKOL 7 Napište funkci twin_primes(count), která vypíše prvních count prvočíselných dvojčat. >>> twin_primes(2) 3-5, 5-7, >>> twin_primes(5) 3-5, 5-7, 11-13, 17-19, 29-31, >>> twin_primes(10) 3-5, 5-7, 11-13, 17-19, 29-31, 41-43, 59-61, 71-73, 101-103, 107-109, # ÚKOL 8 Napište funkci factorization(n), která vypíše rozklad čísla n na prvočísla (jen jako součin). >>> factorization(2) 2 >>> factorization(7) 7 >>> factorization(25) 5 5 >>> factorization(42) 2 3 7 >>> factorization(360) 2 2 2 3 3 5 >>> factorization(1024) 2 2 2 2 2 2 2 2 2 2