# 5% vaja_01() Napišite funkcijo, ki preveri če je prejeto število praštevilo in vrne True v primeru da je in False če ni. import numbers def vaja_01(num): if num < 2: return False if num == 2: return True if num % 2 == 0: return False for i in range(3, num, 2): if num % i == 0: return False return True def test_01(): primes = [2, 3, 5, 7, 11, 193, 197, 199, 211, 223, 104917, 104933, 104947] non_prime_numbers = [91, 99, 105, 110, 121, 130, 140, 145, 154, 161, 169, 175, 182, -3, -2, -1, 0] print("vaja_01") print("Testiranje praštevil:") for i in range(len(primes)): if vaja_01(primes[i]): print("%d. primer praštevila je ok" % (i + 1)) else: print("%d. je praštevilo, vaša funkcija pravi da ni" % primes[i]) print("\nTestiranje ostalih števil:") for i in range(len(non_prime_numbers)): if not vaja_01(non_prime_numbers[i]): print("%d. primer nepraštevila je ok" % (i + 1)) else: print("%d. ni praštevilo, vaša funkcija pravi da je" % non_prime_numbers[i]) # 10% vaja_02() Napišite funkcijo, ki v primeru da dobi praštevilo vrne to isto praštevilo, če dobljeno število ni praštevilo naj vrne najbližje večje praštevilo def vaja_02(num): if vaja_01(num): return num while True: num += 1 if vaja_01(num): return num def test_02(): primes = [2, 3, 5, 7, 11, 193, 197, 199, 211, 223, 104917, 104933, 104947] non_prime_numbers = [91, 99, 105, 110, 121, 130, 140, 145, 154, 161, 169, 175, 182, -3, -2, -1, 0] rez_non = [97, 101, 107, 113, 127, 131, 149, 149, 157, 163, 173, 179, 191, 2, 2, 2, 2] print("\nvaja_02") print("Testiranje praštevil: ") for i in range(len(primes)): if vaja_02(primes[i]) == primes[i]: print("%d. primer je ok" % (i + 1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %d\nvaš rezultat: %d" % ( (i + 1), primes[i], primes[i], vaja_02(primes[i]))) print("\nTestiranje ostalih števil:") for i in range(len(non_prime_numbers)): if vaja_02(non_prime_numbers[i]) == rez_non[i]: print("%d. primer je ok" % (i + 1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %d\nvaš rezultat: %d" % ((i + 1), non_prime_numbers[i], rez_non[i], vaja_02(non_prime_numbers[i]))) # 5% izračunajte absolutno razliko med številom in prvim večjim praštevilom, v primeru, da je bilo vnešeno praštevilo vrnemo 0 def vaja_03(num): return abs(num - vaja_02(num)) def test_03(): print("\nvaja_03") non_prime_numbers = [91, 99, 105, 110, 121, 130, 140, 145, 154, 161, 169, 175, 182, -3, -2, -1, 0, 3, 7, 104947] rez = [6, 2, 2, 3, 6, 1, 9, 4, 3, 2, 4, 4, 9, 5, 4, 3, 2, 0, 0, 0] for i in range(len(non_prime_numbers)): if vaja_03(non_prime_numbers[i]) == rez[i]: print("%d. primer je ok" % (i + 1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %d\nvaš rezultat: %d" % ((i + 1), non_prime_numbers[i], rez[i], vaja_03(non_prime_numbers[i]))) # 5% vaja_04() Napišite funkcijo, ki preveri če je prejeto število palindrom, vrne True če je palindrom in False če ni def vaja_04(num): num = str(num) return num == num[::-1] def test_04(): print("\nvaja_04") numbers = [121, 222, 12345678, 425432542, 234254325254] rez = [True, True, False, False, False] for i in range(len(numbers)): if vaja_04(numbers[i]) == rez[i]: print("%d. primer je ok" % (i + 1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %s\nvaš rezultat: %s" % ((i + 1), numbers[i], str(rez[i]), str(vaja_04(numbers[i])))) # 5% vaja_05() Napišite funkcijo, ki sešteje vse števke nekega števila (lahko predpostavite, da so vsa števila pozitivna) def vaja_05(num): sestevek_stevk = 0 for i in str(num): sestevek_stevk += int(i) return sestevek_stevk def test_05(): print("\nvaja_05") numbers = [0, 1, 2, 132, 654, 8919, 4145] rez = [0, 1, 2, 6, 15, 27, 14] for i in range(len(numbers)): if vaja_05(numbers[i]) == rez[i]: print("%d. primer je ok" % (i+1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %d\nvaš rezultat: %d" % ((i + 1), numbers[i], rez[i], vaja_05(numbers[i]))) # 5% vaja_06() napišite funkcijo, ki sešteje vse števke, ki so praštevila def vaja_06(num): sestevek_stevk = 0 for i in str(num): if vaja_01(int(i)): sestevek_stevk += int(i) return sestevek_stevk def test_06(): print("\nvaja_06") numbers = [0, 1, 2, 132, 654, 8919, 4145] rez = [0, 0, 2, 5, 5, 0, 5] for i in range(len(numbers)): if vaja_06(numbers[i]) == rez[i]: print("%d. primer je ok" % (i+1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %d\nvaš rezultat: %d" % ((i + 1), numbers[i], rez[i], vaja_06(numbers[i]))) # Napišite funkcijo, ki prejme število, znotraj števila poišče vse kombinacije praštevila in vrne njehov seštevek def vaja_07(num): num = str(num) vsota = 0 for j in range(1, len(num)+1): for i in range(len(num)-(j-1)): if vaja_01(int(num[i:i+j])): vsota += (int(num[i:i+j])) return vsota def test_07(): print("\nvaja_07") numbers = [0, 1, 2, 132, 654, 8919, 211, 223, 15269, 27143, 124529] rez = [0, 0, 2, 18, 5, 1027, 224, 253, 15545, 27540, 124567] for i in range(len(numbers)): if vaja_07(numbers[i]) == rez[i]: print("%d. primer je ok" % (i+1)) else: print("%d. primer ni ok\ntestno število: %d\npričakovan rezultat: %d\nvaš rezultat: %d" % ((i + 1), numbers[i], rez[i], vaja_07(numbers[i]))) def