Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import time
- import random
- from kivy.app import App
- from kivy.uix.button import Label
- from kivy.uix.textinput import TextInput
- from kivy.uix.button import Button
- from kivy.uix.boxlayout import BoxLayout
- from kivy.properties import StringProperty
- from kivy.uix.popup import Popup
- from kivy.core.window import Window
- class IsprimeApp(App):
- def build(self):
- def avg(lst):
- return sum(lst) / len(lst)
- def get_font(size):
- return str(avg(Window.size) / (10 - size)) + "sp"
- parent = BoxLayout(orientation="vertical")
- number_input = TextInput(
- text=str(random.randint(5, 10 ** 10)), font_size=get_font(3))
- parent.add_widget(number_input)
- btn = Button(text='Is prime?', font_size=get_font(3))
- def callback(instance):
- def isprime(n):
- MAX_TIME = 1
- WRONG_TYPE = "Enter a number"
- MAX = 10 ** 17
- TOO_BIG = "The number must be less than 10^17"
- NO = "No, {} is not prime".format(n)
- YES = "Yes, {} is prime".format(n)
- try:
- n = int(n)
- except:
- return WRONG_TYPE
- if n > MAX:
- return TOO_BIG
- if n in (0, 1):
- return NO
- if n % 2 == 0 and n != 2:
- return NO
- upper_limit = int((n ** 0.5) + 1)
- for i in range(3, upper_limit, 2):
- if n % i == 0:
- return NO
- return YES
- content = BoxLayout(orientation="vertical")
- content.add_widget(
- Label(text=str(isprime(number_input.text)),
- font_size=get_font(-15)))
- dismiss = Button(text="OK", font_size=get_font(2))
- content.add_widget(dismiss)
- popup = Popup(title='Is the number prime?',
- content=content,
- size_hint=(1, 1),
- font_size=get_font(2))
- dismiss.bind(on_press=popup.dismiss)
- popup.open()
- btn.bind(on_press=callback)
- parent.add_widget(btn)
- return parent
- if __name__ in ('__main__','__android__'):
- IsprimeApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement