python:配列と素数
全く意味は無いけど、ふと頭に浮かんだ事をやってみました。
仕様
ユーザーが数字を入力し、その数字をもとに2次元配列を作成します。
左上段が開始位置の「1」、右下段が終了位置(ユーザーが入力した数値)
です。
これに素数の場合に色を付けます。
例
例1
数字=3
「例1」の解説
左上段が「1」で素数ではないので白
中央上段が「2」で素数なので黒
右上段が「3」で素数なので黒
左中段が「4」で素数ではないので白
中央中段が「5」で素数なので黒
右中段が「6」で素数ではないので白
左下段が「7」で素数なので黒
中央下段が「8」で素数ではないので白
右下段が「9」で素数ではないので白
例2
数字=10
例3
数字=70
素数の発生にルールが有るかと思い、作成してみました。
ただ、画面サイズの問題で上限があり、「数字=100」などでは全て見られません。
以下、ソースです。
pip install numpy
import numpy as np
import tkinter as tk
from tkinter import simpledialog, messagebox
# 素数判定関数
def is_prime(num):
if num < 2:
return False
for i in range(2, int(np.sqrt(num)) + 1):
if num % i == 0:
return False
return True
# ダイアログで配列のサイズを入力
root = tk.Tk()
root.withdraw() # メインウィンドウを非表示にする
n = simpledialog.askinteger("入力", "配列のサイズを入力してください:")
# 2次元配列を作成し、1から始まる数をセット
array = np.arange(1, n * n + 1).reshape(n, n)
# 結果を表示
result = ""
for i in range(n):
for j in range(n):
value = array[i][j]
if is_prime(value):
result += "■"
else:
result += "□"
result += "\n"
# 結果をフォームで表示
messagebox.showinfo("結果", result)
この記事が気に入ったらサポートをしてみませんか?