from math import ceil import locate2 def crible(max): result = [i for i in range(2, max) if i%2 and i%5] step = 0 while step != len(result): div = result[step] if div**2 > result[-1]: break result = [i for i in result if i%div or i==div] step += 1 #insert 2 & 5 if needed if max > 2: result.insert(0, 2) if max > 5: result.insert(2, 5) return result #list browser def explore(provided_list): scr = locate2.Screen(21, 7) #app screen, w:21 h:7 pos = 0 max_pos = ceil(len(provided_list) / 7) - 1 key = " " while key != "0": scr.fill() scr.locate_v(21, 1, "^4||1v") #sidebar status = "{}/{}".format(pos, max_pos) scr.locate(20 - len(status), 1, status) for i in range(7): try: scr.locate(1, i+1, provided_list[pos*7+i]) except: break uin = scr.refresh(fancy=True)[-1:] #only keep the last char entered key = uin if uin else key power = 10 ** "123".find(key) if power != 0.1 and pos + power <= max_pos: pos += power power = 10 ** "456".find(key) if power != 0.1 and pos - power >= 0: pos -= power result = crible(int(input("max>"))) explore(result)