import math
def main():
    d={}      #for encryption
    inv_d={}  #for decryption
    arr=prime_list()
    delimiter='#'
    abc='abcdefghijklmnopqrstuvwxyz'
    for i in range(len(arr)):
        d[abc[i]]=str(arr[i]) #set up dictionary: letter:prime
    d[' ']=' '
    for k in d:
        inv_d[d[k]]=k
    #print('dict=',d)
    #print('inverted dict=',inv_d)

    in1=input('To encrypt text enter e, to decrypt d: ')
    if in1=='e':
        etext=input("Please enter text to be encrypted: ")
        encrypt(etext,d)
    else:
        dtext=input("Please enter text to be decrypted: ")
        decrypt(dtext,inv_d)
#----------------------------------------------------------------------------
def encrypt(etext,d):
    out_text=''
    for ch in etext:
        out_text+=str(d[ch])
        out_text+='#'
    print('encrypted text:', out_text)
#----------------------------------------------------------------------------
def decrypt(dtext,inv_d):
    dec_text=''
    inp_array=dtext.split('#')
    del inp_array[-1]
    #print(inp_array)
    for j in range(len(inp_array)):
        dec_text+=inv_d[inp_array[j]]
    print('decrypted text:',dec_text)


#----------------------------------------------------------------------------
def prime_list():
    prime_counter=0
    limit=26
    prime_arr=[]
    prime_cand=2
    while prime_counter < limit:
        if prime_check(prime_cand):
            prime_counter +=1
            prime_arr.append(prime_cand)
        prime_cand +=1
    #print(prime_arr)
    return prime_arr
#----------------------------------------------------------------------------
def prime_check(cand):
    div=2
    if cand==2:
        return 1
    upper_div=int(math.sqrt(cand))
    while div <= upper_div:
        if cand//div == cand/div:
            return 0
        else:
            div +=1
    return 1
#----------------------------------------------------------------------------
if __name__ == '__main__':
    main()