I feel that the number “

**13**”, for far too long, has been un-fairly maligned.

Today, it will have its redemption.

Did you know that the number “

**13**”, by some definitions, is both a happy and lucky number? Let’s delve deeper into each definition, and together discover why this number deserves much more respect than it currently receives.

__Happy Numbers__In number theory, a happy number is a number which eventually reaches 1 when replaced by the sum of the square of each digit. *

**Example:**

For instance,

**13**is a happy number because:

(1 * 1) + (3 * 3) = 10

(1 * 1) + (0 * 0) = 1

and the number

**19**is also a happy number because:

(1 * 1) + (9 * 9) = 82

(8 * 8) + (2 * 2) = 68

(6 * 6) + (8 * 8) = 100

(1 * 1) + (0 * 0) + (0 * 0) = 1

**- https://en.wikipedia.org/wiki/Happy_number*

__Lucky Numbers__In number theory, a lucky number is a natural number in a set which is generated by a certain "sieve". *

In the case of our (lucky) number generation process, we will be utilizing the, "the sieve of Josephus Flavius".

**Example:**

{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20}

We will remove all even numbers:

**2**, 3,

**4**, 5,

**6**, 7,

**8**, 9,

**10**, 11,

**12**, 13,

**14**, 15,

**16**, 17,

**18**, 19,

**20**

Leaving:

1, 3, 5, 7, 9, 11, 13, 15, 17, 19

The first remaining number after the number “

**1**”, is the number “

**3**”. Therefore, every third number within the list must be removed:

1, 3,

**5**, 7, 9,

**11**, 13, 15,

**17**, 19

Leaving:

1, 3, 7, 9, 13, 15, 19

Next, we will remove each seventh entry within the remaining list, as the number “

**7**” is the value which occurs subsequent to “

**3**”:

1, 3, 7, 9, 13, 15,

**19**

Leaving:

1, 3, 7, 9, 13, 15

If we were to continue with this process, each ninth entry which would also be subsequently removed from the remaining list, as the number “

**9**” is the number which occurs subsequent to “

**7**”. Since only 6 elements remain from our initial set, the process ends here.

We can then conclude, that the following numbers are indeed lucky:

1, 3, 7, 9, 13, 15

**- https://en.wikipedia.org/wiki/Lucky_number*

**Prime Numbers**

A prime number is a natural number greater than 1 that is not a product of two smaller natural numbers. *

13 fits this categorization, as it can only be factored down to a product of 13 and 1.

**- https://en.wikipedia.org/wiki/Prime_number*

__(Python) Automating the Process__Now that I have hopefully explained each concept in an understandable way, let’s automate some of these processes.

__Happy Numbers__**# Create a list of happy numbers between 1 and 100 #**

**# https://en.wikipedia.org/wiki/Happy_number #**

# This code is a modified variation of the code found at: #

# https://www.phptpoint.com/python-program-to-print-all-happy-numbers-between-1-and-100/ #

# This code is a modified variation of the code found at: #

# https://www.phptpoint.com/python-program-to-print-all-happy-numbers-between-1-and-100/ #

**# Python program to print all happy numbers between 1 and 100 #**

**# isHappyNumber() will determine whether a number is happy or not #**

**def isHappyNumber(num):**

rem = sum = 0;

rem = sum = 0;

**# Calculates the sum of squares of digits #**

while(num > 0):

rem = num%10;

sum = sum + (rem*rem);

num = num//10;

return sum;

while(num > 0):

rem = num%10;

sum = sum + (rem*rem);

num = num//10;

return sum;

**# Displays all happy numbers between 1 and 100 #**

print("List of happy numbers between 1 and 100: \n 1");

print("List of happy numbers between 1 and 100: \n 1");

**# for i in range(1, 101):, always utilize n+1 as it pertains to the number of element entries within the set #**

# Therefore, for our 100 elements, we will utilize 101 as the range variable entry #

# Therefore, for our 100 elements, we will utilize 101 as the range variable entry #

**for i in range(1, 101):**

result = i;

result = i;

**while(result != 1 and result != 4):**

result = isHappyNumber(result);

if(result == 1):

print(i);

result = isHappyNumber(result);

if(result == 1):

print(i);

__Console Output:__

*List of happy numbers between 1 and 100:*

1

7

10

13

19

23

28

31

32

44

49

68

70

79

82

86

91

94

97

100

1

7

10

13

19

23

28

31

32

44

49

68

70

79

82

86

91

94

97

100

**# Code which verifies whether a number is a happy number #**

# Code Source: # https://en.wikipedia.org/wiki/Happy_number #

# This process is unfortunately two steps #

# Code Source: # https://en.wikipedia.org/wiki/Happy_number #

# This process is unfortunately two steps #

**def pdi_function(number, base: int = 10):**

"""Perfect digital invariant function."""

total = 0

while number > 0:

total += pow(number % base, 2)

number = number // base

return total

def is_happy(number: int) -> bool:

"""Determine if the specified number is a happy number."""

seen_numbers = set()

while number > 1 and number not in seen_numbers:

seen_numbers.add(number)

number = pdi_function(number)

return number == 1

"""Perfect digital invariant function."""

total = 0

while number > 0:

total += pow(number % base, 2)

number = number // base

return total

def is_happy(number: int) -> bool:

"""Determine if the specified number is a happy number."""

seen_numbers = set()

while number > 1 and number not in seen_numbers:

seen_numbers.add(number)

number = pdi_function(number)

return number == 1

**# First, we must run the initial function on the number in question #**

# This function will calculate the number’s perfect digital invariant value #

# Example, for 13 #

# This function will calculate the number’s perfect digital invariant value #

# Example, for 13 #

**pdi_function(13)**

__Console Output:__

*10*

**# The output value of the first function must then be input into the subsequent function, in order to determine whether or not the tested value (ex. 13) can appropriately be deemed “happy”. #**

is_happy(10)

is_happy(10)

__Console Output:__

*True*

__Lucky Numbers__**# https://en.wikipedia.org/wiki/Lucky_number # ****# The code below will determine whether or not a number is "lucky", as defined by the above definition of the term #****# The variable ‘number check’, must be set equal to the number which we wish to assess # number_check = 99 **

**# Python code to convert list of #**

# string into sorted list of integer #

# https://www.geeksforgeeks.org/python-program-to-convert-list-of-integer-to-list-of-string/ #

# string into sorted list of integer #

# https://www.geeksforgeeks.org/python-program-to-convert-list-of-integer-to-list-of-string/ #

**# List initialization**

list_int = list(range(1,(number_check + 1),1))

list_int = list(range(1,(number_check + 1),1))

**# mapping**

list_string = map(str, list_int)

list_string = map(str, list_int)

**# Printing sorted list of integers**

numbers = (list(list_string))

numbers = (list(list_string))

**# https://stackoverflow.com/questions/64956140/lucky-numbers-in-python #**

**def lucky_numbers(numbers):**

index = 1

next_freq = int(numbers[index])

while int(next_freq) < len(numbers):

del numbers[next_freq-1::next_freq]

print(numbers)

if str(next_freq) in numbers:

index += 1

next_freq = int(numbers[index])

else:

next_freq = int(numbers[index])

return

lucky_numbers(numbers)

index = 1

next_freq = int(numbers[index])

while int(next_freq) < len(numbers):

del numbers[next_freq-1::next_freq]

print(numbers)

if str(next_freq) in numbers:

index += 1

next_freq = int(numbers[index])

else:

next_freq = int(numbers[index])

return

lucky_numbers(numbers)

__Console Output:__

['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']

['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']

['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']

['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']

['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']

['1', '3', '7', '9', '13', '15', '21', '25', '31', '33', '37', '43', '49', '51', '63', '67', '69', '73', '75', '79', '85', '87', '93', '99']

The output of this function returns a series of numbers up to and including the number which is being assessed. Therefore, from this function's application, we can conclude that the following numbers are "lucky":

*['1', '3', '7', '9', '13', '15', '21', '25', '31', '33', '37', '43', '49', '51', '63', '67', '69', '73', '75', '79', '85', '87', '93', '99'] *

(Only consider the final output as valid, as all other outputs are generated throughout the reduction process)**Prime Numbers****# The code below is rather self-explanatory #**

**# It is utilized to generate a a list of prime numbers included within the range() function # **

**# Source: https://stackoverflow.com/questions/52821002/trying-to-get-all-prime-numbers-in-an-array-in-python #**

checkMe = range(1, 100)

primes = []

for y in checkMe[1:]:

x = y

dividers = []

for x in range(2, x):

if (y/x).is_integer():

dividers.append(x)

if len(dividers) < 1:

primes.append(y)

print("\n"+str(checkMe)+" has "+str(len(primes))+" primes")

print(primes)

checkMe = range(1, 100)

primes = []

for y in checkMe[1:]:

x = y

dividers = []

for x in range(2, x):

if (y/x).is_integer():

dividers.append(x)

if len(dividers) < 1:

primes.append(y)

print("\n"+str(checkMe)+" has "+str(len(primes))+" primes")

print(primes)

__Console Output:__

*range(1, 100) has 25 primes*

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]

__Conclusion__

Having performed all of the previously mentioned tests and functions, I hope that you have been provided with enough adequate information to reconsider **13**'s unlucky status. Based upon my number theory research, I feel that enough evidence exists to at least relegate the number **13** to the status of "misunderstood".

**13 **isn't to be feared or avoided. It actually shares unique company amongst other "**Happy Primes**":

7, 13, 19, 23, 31, 79, 97, 103, 109, 139, 167, 193, 239, 263, 293, 313, 331, 367, 379, 383, 397, 409, 487

Even intermingling with the company of "**Lucky Primes**":

3, 7, 13, 31, 37, 43, 67, 73, 79, 127, 151, 163, 193, 211, 223, 241, 283, 307, 331, 349, 367, 409, 421, 433, 463, 487

And being a member of the very exclusive group, the "**Happy Lucky Primes**":

7, 13, 31, 79, 193, 331, 367, 409, 487

-----------------------------------------------------------------------------------------------------------------------------

I wish you all a very happy and safe holiday.

I'll see you next week with more (non-spooky) content!

-RD