Advertisement
Guest User

Untitled

a guest
Dec 18th, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.29 KB | None | 0 0
  1. import time
  2. import random
  3. from kivy.app import App
  4. from kivy.uix.button import Label
  5. from kivy.uix.textinput import TextInput
  6. from kivy.uix.button import Button
  7. from kivy.uix.boxlayout import BoxLayout
  8. from kivy.properties import StringProperty
  9. from kivy.uix.popup import Popup
  10. from kivy.core.window import Window
  11.  
  12.  
  13. class IsprimeApp(App):
  14.  
  15. def build(self):
  16.  
  17. def avg(lst):
  18. return sum(lst) / len(lst)
  19.  
  20. def get_font(size):
  21. return str(avg(Window.size) / (10 - size)) + "sp"
  22.  
  23. parent = BoxLayout(orientation="vertical")
  24. number_input = TextInput(
  25. text=str(random.randint(5, 10 ** 10)), font_size=get_font(3))
  26. parent.add_widget(number_input)
  27. btn = Button(text='Is prime?', font_size=get_font(3))
  28.  
  29. def callback(instance):
  30. def isprime(n):
  31. MAX_TIME = 1
  32. WRONG_TYPE = "Enter a number"
  33. MAX = 10 ** 17
  34. TOO_BIG = "The number must be less than 10^17"
  35. NO = "No, {} is not prime".format(n)
  36. YES = "Yes, {} is prime".format(n)
  37. try:
  38. n = int(n)
  39. except:
  40. return WRONG_TYPE
  41. if n > MAX:
  42. return TOO_BIG
  43. if n in (0, 1):
  44. return NO
  45. if n % 2 == 0 and n != 2:
  46. return NO
  47. upper_limit = int((n ** 0.5) + 1)
  48. for i in range(3, upper_limit, 2):
  49. if n % i == 0:
  50. return NO
  51. return YES
  52.  
  53. content = BoxLayout(orientation="vertical")
  54. content.add_widget(
  55. Label(text=str(isprime(number_input.text)),
  56. font_size=get_font(-15)))
  57. dismiss = Button(text="OK", font_size=get_font(2))
  58. content.add_widget(dismiss)
  59. popup = Popup(title='Is the number prime?',
  60. content=content,
  61. size_hint=(1, 1),
  62. font_size=get_font(2))
  63. dismiss.bind(on_press=popup.dismiss)
  64. popup.open()
  65.  
  66. btn.bind(on_press=callback)
  67. parent.add_widget(btn)
  68. return parent
  69.  
  70. if __name__ in ('__main__','__android__'):
  71. IsprimeApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement