Python/skript/Lucky number.py

< Python‎ | skript

Python/skript/Lucky_number.py – viz w: Příznivé číslo

# Lucky_number.py
# Demonstruje, jak se hledá posloupnost příznivých čísel

max = 99          # Maximum, do jakého čísla hledáme

print (f'Lucky_number, max={max}:')

run = 0           # Kolikátý běh
LL  = []          # List of Lists – seznam postupných iterací
LL.append([])     # LL[0]
for i in range(1,max+1):  # LL[0] naplníme čísly 1..max
    LL[run].append(i)
print(''.join(f'{q:3d}' for q in (LL[run])))
mod = 2           # modulo = kolikátý v řadě se vyhodí
length = len(LL[run])

while(mod <= length):
    LL.append(LL[run])   #zkopírujeme poslední seznam do dalšího
    run += 1             # další běh
    print(f'--- run={run}, length={length}, mod={mod} ---')
    
    for i in range (0, length):
        if not (i+1) % mod:
            LL[run][i] = 0   # každý mod-tý člen přepíšeme nulou 

    print(''.join(f'{q:3d}' for q in (LL[run])))
    LL[run] = [n for n in LL[run] if n != 0]   # vyházíme nulové členy
    print(''.join(f'{q:3d}' for q in (LL[run])))
    length = len(LL[run])
    if(run >= length):
        break
    mod = LL[run][run]
    
print(' ==' * length)
# Kontrola dle Příznivé číslo https://cs.wikipedia.org/wiki/P%C5%99%C3%ADzniv%C3%A9_%C4%8D%C3%ADslo
print('  1, 3, 7, 9,13,15,21,25,31,33,37,43,49,51,63,67,69,73,75,79,87,93,99')
print(f'length = {length}')

Výstup:

Lucky_number, max=99:
  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
--- run=1, length=99, mod=2 ---
  1  0  3  0  5  0  7  0  9  0 11  0 13  0 15  0 17  0 19  0 21  0 23  0 25  0 27  0 29  0 31  0 33  0 35  0 37  0 39  0 41  0 43  0 45  0 47  0 49  0 51  0 53  0 55  0 57  0 59  0 61  0 63  0 65  0 67  0 69  0 71  0 73  0 75  0 77  0 79  0 81  0 83  0 85  0 87  0 89  0 91  0 93  0 95  0 97  0 99
  1  3  5  7  9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
--- run=2, length=50, mod=3 ---
  1  3  0  7  9  0 13 15  0 19 21  0 25 27  0 31 33  0 37 39  0 43 45  0 49 51  0 55 57  0 61 63  0 67 69  0 73 75  0 79 81  0 85 87  0 91 93  0 97 99
  1  3  7  9 13 15 19 21 25 27 31 33 37 39 43 45 49 51 55 57 61 63 67 69 73 75 79 81 85 87 91 93 97 99
--- run=3, length=34, mod=7 ---
  1  3  7  9 13 15  0 21 25 27 31 33 37  0 43 45 49 51 55 57  0 63 67 69 73 75 79  0 85 87 91 93 97 99
  1  3  7  9 13 15 21 25 27 31 33 37 43 45 49 51 55 57 63 67 69 73 75 79 85 87 91 93 97 99
--- run=4, length=30, mod=9 ---
  1  3  7  9 13 15 21 25  0 31 33 37 43 45 49 51 55  0 63 67 69 73 75 79 85 87  0 93 97 99
  1  3  7  9 13 15 21 25 31 33 37 43 45 49 51 55 63 67 69 73 75 79 85 87 93 97 99
--- run=5, length=27, mod=13 ---
  1  3  7  9 13 15 21 25 31 33 37 43  0 49 51 55 63 67 69 73 75 79 85 87 93  0 99
  1  3  7  9 13 15 21 25 31 33 37 43 49 51 55 63 67 69 73 75 79 85 87 93 99
--- run=6, length=25, mod=15 ---
  1  3  7  9 13 15 21 25 31 33 37 43 49 51  0 63 67 69 73 75 79 85 87 93 99
  1  3  7  9 13 15 21 25 31 33 37 43 49 51 63 67 69 73 75 79 85 87 93 99
--- run=7, length=24, mod=21 ---
  1  3  7  9 13 15 21 25 31 33 37 43 49 51 63 67 69 73 75 79  0 87 93 99
  1  3  7  9 13 15 21 25 31 33 37 43 49 51 63 67 69 73 75 79 87 93 99
 == == == == == == == == == == == == == == == == == == == == == == ==
  1, 3, 7, 9,13,15,21,25,31,33,37,43,49,51,63,67,69,73,75,79,87,93,99
length = 23