Týden II V tomto týdnu budeme cvičit samotné programování. Úlohy zde nemají aplikační motivaci, jedná se o úlohy na procvičení cyklů a psaní vlastních funkcí. Úkol 1. Napište funkci series_sum_squares (n), která vrací součet druhých mocnin čísel 1,2,... ,n. series_sum_squares(1) ## [1] 1 series_sum_squares(3) ## [1] 14 series_sum_squares(100) ## [1] 338350 Úkol 2. Napište funkci divisors (n), která vrací vektor všech dělitelů čísla n. divisors(1) ## [1] 1 divisors(12) ## [1] 1 2 3 4 6 12 divisors(311) ## [1] 1 311 Úkol 3. Napište funkci number_of .divisors (n), která vrací počet dělitelů čísla n. number_of_divisors(1) ## [1] 1 number_of_divisors(12) ## [1] 6 number_of_divisors(311) ## [1] 2 Úkol 4. Napište funkci is_prime(n), která vrací TRUE, pokud je n prvočíslo a FALSE jinak. is_prime(l) ## [1] FALSE is_prime(12) ## [1] FALSE is_prime(311) ## [1] TRUE 1 Úkol 5. Napište funkci primes (n), která vrací prvních n prvočísel, primes(1) ## [1] 2 primes(10) ## [1] 2 3 5 7 11 13 17 19 23 29 Úkol 6. Napište funkci primes_between(from, to), která vrací vektor prvočísel z diskrétního intervalu from... to. primes_between(l, 10) ## [1] 2 3 5 7 primes_between(100, 200) ## [1] 101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 ## [20] 197 199 primes_between(50,53) ## [1] 53 2 Domácí úlohy Domácí úloha 1 (1 bod). Vytvořte funkci faktorial(x), která vrací faktoriál čísla x, tj. x!. Nezapomeňte, že 0! = 1. faktoriál(0) ## [1] 1 faktoriál(4) ## [1] 24 faktoriál(10) ## [1] 3628800 Domácí úloha 2 (1 bod). Vytvořte funkci ciferný _soucet (x), která vrací ciferný součet kladného celého čísla (vzhledem k výpočetním omezením o maximálně 12 cifrách). ciferny_soucet(12345) ## [1] 15 ciferny_soucet(1) ## [1] 1 ciferny_soucet(9999999999) ## [1] 90 Domácí úloha 3 (1 bod). Vytvořte funkci jedna_cifra(x), která provádí opakovaný ciferný součet čísla x, dokud nezbyde jediná cifra; např. 78 —> 15 —> 6. jedna_cifra(12345) ## [1] 6 jedna_cifra(l) ## [1] 1 jedna_cifra(9999999999) ## [1] 9 3