![見出し画像](https://assets.st-note.com/production/uploads/images/84164678/rectangle_large_type_2_7d5100bbe3bd210186e26bf9103ca8b8.png?width=1200)
Python素数判定プログラム(tkinter)
今回はTkinterで素数を判定するプログラムを作成しました。
まずは、作成した画面を共有します。
作成画面
![](https://assets.st-note.com/img/1659776027257-5n1hnV3vsx.png)
簡易的ですがこういう画面になっています。
実際に実行してみます。
素数の場合
![](https://assets.st-note.com/img/1659776110102-VcrRYImqey.png)
素数ではない時
![](https://assets.st-note.com/img/1659776169490-8EboX3UXZc.png)
このようになります。
テキストの値を取得してそれが素数かどうかを判定しているだけの簡易的なプログラムになります。
Tkinterの初心者用の練習としてはかなり有効だと思います。
ソースコード
import tkinter
from tkinter import messagebox
from sympy import prime
def btn_click():
num = int(txt_1.get())
prime_yes = '素数です。'
prime_no = '素数ではないです。'
if num <= 1: # 素数ではない
txt_2.delete(0, tkinter.END)
txt_2.insert(0, prime_no)
else:
for i in range(2, int(num**0.5)+1): # 1/2にしてint()小数から整数に直している。
if num % i == 0: # 0になったらFalseを返す。
txt_2.delete(0, tkinter.END)
txt_2.insert(0, prime_no)
break
else:
txt_2.delete(0, tkinter.END)
txt_2.insert(0, prime_yes)
# 画面作成
root = tkinter.Tk()
root.geometry('450x350')
root.title('素数判定')
root.configure(bg='SpringGreen2') # 色の設定
# ラベル
lbl_1 = tkinter.Label(text='数値入力')
lbl_1.place(x=90, y=120)
# ラベル
lbl_2 = tkinter.Label(text='判定')
lbl_2.place(x=90, y=150)
# テキストボックス
txt_1 = tkinter.Entry(width=10)
txt_1.place(x=150, y=120)
# テキストボックス
txt_2 = tkinter.Entry(width=20)
txt_2.place(x=150, y=150)
# ボタン
btn = tkinter.Button(root, text='素数判定', command=btn_click)
btn.place(x=150, y=180)
root.mainloop()
素数判定関数
def btn_click():
num = int(txt_1.get())
prime_yes = '素数です。'
prime_no = '素数ではないです。'
if num <= 1: # 素数ではない
txt_2.delete(0, tkinter.END)
txt_2.insert(0, prime_no)
else:
for i in range(2, int(num**0.5)+1): # 1/2にしてint()小数から整数に直している。
if num % i == 0: # 0になったらFalseを返す。
txt_2.delete(0, tkinter.END)
txt_2.insert(0, prime_no)
break
else:
txt_2.delete(0, tkinter.END)
txt_2.insert(0, prime_yes)
まず、numという変数にint型でテキストの値を格納しています。
そして、prime_yes,prime_noにそれぞれ文字列を格納しています。
for文で入力した数値を半分にしてループで確認しています。
numをi(半分にした数値)で割り余りが0になった場合は割り切れているので素数ではありません。
全て割り切れなかった場合に素数である。という文字列を返しています。
例.num = 7の時
半分にして3にしてループをします。0になった場合は素数であるとテキストボックスに表示します。
それ以外の場合は素数ではないと表示します。
実際に書いて試してみて下さい。
以上になります。
この記事が参加している募集
この記事が気に入ったらサポートをしてみませんか?