Skip to content

Instantly share code, notes, and snippets.

@hackerdem
Created April 17, 2016 17:07
Show Gist options
  • Save hackerdem/877a952a519d099223256b5fd41a0916 to your computer and use it in GitHub Desktop.
Save hackerdem/877a952a519d099223256b5fd41a0916 to your computer and use it in GitHub Desktop.
find happy numbers for a given interval
import threading
import queue
import argparse
def happy_number_finder(num,re_list):
top=0
if len(re_list)==2:del re_list[-1]
re_list.append(num)
for ch in num:
top+=(int(ch))**2
if top!=1:
happy_number_finder(str(top),re_list)
return re_list[0]
def threader():
while True:
value=q.get()
try:
re_list=[]
result=happy_number_finder(str(value),re_list)
happy_numbers.append(result)
except:
pass
q.task_done()
if __name__=='__main__':
print("Usage find_happy_numbers.py upper_limit lower_limit")
print("Large intervals can take more computational time")
parser=argparse.ArgumentParser()
parser.add_argument("up",help="Upper limit for interval",type=str)
parser.add_argument("down",help="Lower limit for interval",type=str)
args=parser.parse_args
print(args)
happy_numbers=[]
q=queue.Queue()
for i in range(40):
t=threading.Thread(target=threader)
t.daemon=True
t.start()
for value in range(int(args[2]),int(args[3])+1):
q.put(value)
q.join()
print("list of happy_numbers")
print(happy_numbers)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment