Er navnet mitt et palindromprimtall?


Jeg har tidligere skrevet om snodige tallfenomener som Snøballtall, Kvadratrotord, Kvadratrotord en gang til, Selvtall og Selvprimtall og om et navn kan være et primtall.

“If you see someone’s name and you give each letter a value from 1 to 26 (a = 1, b = 2 etc.) and you add the numbers up in your head and you find that it makes a prime number, like Jesus Christ…”

“The Curious Incident of the Dog in the Night-Time by Mark Haddon“

Den siste artikkelen som handlet om navn kunne være et primtall var ekstra fascinerende synes jeg og nylig kom jeg til å tenke på palindromprimtall. Hva er det for noe spør du? Først litt forklaringer på hva et palindromprimtall er:

Et palindrom er et ord, uttrykk eller tall som gir samme resultat enten det leses fra høyre eller venstre. For eksempel er tallet 1331 et palindromtall og ordet regninger er et palindromord.

Et primtall er et naturlig tall større enn 1, som bare er delelig med seg selv og 1. For eksempel 2, 3, 5, 7, 11, 13, 17 og 19.

Et palindromprimtall er altså da et primtall som også er et palindrom, altså at primtallet er det samme forlengs som baklengs. For eksempel 101, 131, 151, 181 og 191.

Okei, hvor vil jeg med dette? Jo jeg tenkte følgende; hvis det er stilig at et navn kan være et primtall, hvor kult ville det ikke vært om navnet i tillegg er et palindromprimtall? Hvordan kan vi sjekke dette? Vi må tilbake til scriptet jeg skrev for å finne ut om et navn er prim og hvis det er det, sjekke om det også er palindrom.

En utvidelse av scriptet vil være å la den sjekke navn bulkvis, altså mate scriptet med en liste med navn for å sjekke alle. Kanskje skal du ha barn og da er det kanskje lurt å finne bare de navnene som er palindromprimtall? Ikke det? Neivel, kanskje litt for nerdete..

I alle fall finner jeg få navn som er det, men Jesus Christ er faktisk et eksempel:

Det opprinnelige scriptet la sammen bokstavene, gjort om fra a=1, b=2 osv og sjekket om summen var et primtall. En utvidelse av scriptet vil være å reversere summen av tallet og sjekke om det blir det samme tallet. Da vet jeg om det er et palindrom.

isnamepalindromeprime.py:

#!/usr/bin/python3
# coding: utf-8
#
# If your sum each letter in a name using a=1, b=2...
# will the name be a prime number? Or even better, a palindrome?
#
# Make a function to allow checking a list of names

import sys

def checkList():
    '''read line by line from a file and check it
    '''
    pass
    

def main():
    '''Convert each character in a name to a number (a=1, b=2..) 
    and check if it is a prime number summed.'''
    
    chars = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', \
        'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'æ', 'ø', 'å']

    # Get a name input, can be one or more names
    try:
        input_name = sys.argv[1]
    except:
        input_name = input('Enter a name: ')

    # Clean up name
    input_name_clean = input_name.lower().replace(" ", "").replace("-", "")
    # Check each character againts the alphabet list, and sum it
    sum_name = (sum(chars.index(c) + 1 for c in input_name_clean))

    # Check if the sum is a prime number or not
    if all(sum_name % i for i in range(2, sum_name)):
        print("{} is prime ({})".format(input_name, str(sum_name)))
        # Also, check if number is palindrom
        reverse_name = str(sum_name)[::-1]
        if sum_name == int(reverse_name):
            print("Not only that, it is also a palindromeprime!")

    else:
        print("Sorry, {} is not prime ({})".format(input_name, str(sum_name)))



if __name__ == '__main__':
    main()