0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

大人向け。nが整数のとき、n^5-n は,30の倍数であることの証明「倍数を示す問題2 の後半のみ」様を、証明はsympyで。

0
Last updated at Posted at 2026-10-06

・OEIS に見つける事ができませんでした。
・??? 前半と同じようにできませんでした。
前半へ
https://qiita.com/mrrclb48z/items/300f16a2ef08ec94af31

オリジナル

松本幸夫 様 (0:00〜8:46 の内 2:21〜8:46) いつもお世話になっております。
↓倍数を示す問題2
https://youtu.be/JW0Q3MeZqLY?t=141

(本日の)Gemini先生の 「nが整数のとき、n^5-n は,30の倍数であることの証明」

(Gemini先生のステキな回答省略。抜粋)

$N$ (または $n$ )が整数のとき、$n^5 - n$ が常に $30$ の倍数となることの証明です。
1. 2の倍数(偶数)であることの証明...
2. 3の倍数であることの証明...
3. 5の倍数であることの証明
フェルマーの小定理を利用するのが最も簡潔です。
...

(フェルマーの小定理を利用する,しないの)両方を区切って教えて下さい。

(回答抜粋)

# SymPy を用いて n^5 - n が 30 の倍数であることを検証・証明するプログラム
import sympy as sp

# 1. 記号の定義
n = sp.Symbol("n", integer=True)
expr = n**5 - n

print("=== 1. 式の因数分解 ===")
factored_expr = sp.factor(expr)
print(f"n^5 - n = {factored_expr}")

print("\n=== 2. 小さい整数での具体値の検証 ===")
values = {i: expr.subs(n, i) for i in range(1, 11)}
for k, v in values.items():
    print(f"n = {k:2d}: {expr.subs(n, k):6d} = 30 * {v // 30}")

print("\n=== 3. 剰余環(Modulo Arithmetic)による全余りパターンの検証 ===")
# n^5 - n (mod 30) が全ての余り 0..29 に対して 0 になるか判定
all_zero = all((i**5 - i) % 30 == 0 for i in range(30))
print(f"全ての余り r in [0, 29] で (r^5 - r) ≡ 0 (mod 30) となるか: {all_zero}")

実行結果(Output)

=== 1. 式の因数分解 ===
n^5 - n = n*(n - 1)*(n + 1)*(n**2 + 1)

=== 2. 小さい整数での具体値の検証 ===
n =  1:      0 = 30 * 0
n =  2:     30 = 30 * 1
n =  3:    240 = 30 * 8
n =  4:   1020 = 30 * 34
n =  5:   3120 = 30 * 104
n =  6:   7770 = 30 * 259
n =  7:  16807 -> 16800 = 30 * 560
n =  8:  32760 = 30 * 1092
n =  9:  59040 = 30 * 1968
n = 10:  99990 = 30 * 3333

=== 3. 剰余環(Modulo Arithmetic)による全余りパターンの検証 ===
全ての余り r in [0, 29] で (r^5 - r) ≡ 0 (mod 30) となるか: True

整数ですけど

整数ですけど、負の数だとソースコードが変ってきますか。
# 負の整数を含めた SymPy による n^5 - n の 30 の倍数検証プログラム
import sympy as sp

# 記号の定義 (整数集合 Z 全体を想定)
n = sp.Symbol("n", integer=True)
expr = n**5 - n

print("=== 1. 代数的偶関数・奇関数性の確認 ===")
# f(-n) = (-n)^5 - (-n) = -(n^5 - n) = -f(n)
is_odd = sp.simplify(expr.subs(n, -n) + expr) == 0
print(f"f(-n) == -f(n) (奇関数であるか): {is_odd}")

print("\n=== 2. 負の整数を含む具体値の検証 ===")
test_values = range(-10, 11)
all_divisible = True

for val in test_values:
    res = expr.subs(n, val)
    divisible = (res % 30 == 0)
    if not divisible:
        all_divisible = False
    print(f"n = {val:3d}: {res:7d} = 30 * {res // 30:5d}  (30の倍数: {divisible})")

print(f"\nすべてのテスト値で 30 の倍数か: {all_divisible}")

実行結果(Output)

=== 1. 代数的偶関数・奇関数性の確認 ===
f(-n) == -f(n) (奇関数であるか): True

=== 2. 負の整数を含む具体値の検証 ===
n = -10: -99990 = 30 * -3333  (30の倍数: True)
n =  -9: -59040 = 30 * -1968  (30の倍数: True)
n =  -8: -32760 = 30 * -1092  (30の倍数: True)
n =  -7: -16800 = 30 *  -560  (30の倍数: True)
n =  -6:  -7770 = 30 *  -259  (30の倍数: True)
n =  -5:  -3120 = 30 *  -104  (30の倍数: True)
n =  -4:  -1020 = 30 *   -34  (30の倍数: True)
n =  -3:   -240 = 30 *    -8  (30の倍数: True)
n =  -2:    -30 = 30 *    -1  (30の倍数: True)
n =  -1:      0 = 30 *     0  (30の倍数: True)
n =   0:      0 = 30 *     0  (30の倍数: True)
n =   1:      0 = 30 *     0  (30の倍数: True)
n =   2:     30 = 30 *     1  (30の倍数: True)
n =   3:    240 = 30 *     8  (30の倍数: True)
n =   4:   1020 = 30 *    34  (30の倍数: True)
n =   5:   3120 = 30 *   104  (30の倍数: True)
n =   6:   7770 = 30 *   259  (30の倍数: True)
n =   7:  16800 = 30 *   560  (30の倍数: True)
n =   8:  32760 = 30 *  1092  (30の倍数: True)
n =   9:  59040 = 30 *  1968  (30の倍数: True)
n =  10:  99990 = 30 *  3333  (30の倍数: True)

すべてのテスト値で 30 の倍数か: True

結論と解説:ソースコードを変更・拡張するポイント
結論から申し上げますと、「本質的な論理」は負の数でも全く変わりませんが、プログラムの観点では以下の2つの性質を利用することで、より洗練されたコードにすることができます。
1. 奇関数性 $f(-n) = -f(n)$ の利用...
2. 剰余算(Modulus)の扱い...
(??? わからなくなったので、中断。)

Nが整数のとき、n^5-n は,30の倍数である。 OEISのid を教えて下さい。

(??? わからなくなったので、中断。)

(おまけ)Gemini先生へ。履歴。

・途中あきらめました。

1. Nが整数のとき、n^5-n は,30の倍数である。
2. 両方を区切って教えて下さい。
3. sympy のソースコードで教えて下さい。計算結果をmarkdownを背景黒で。
4. 整数ですけど、負の数だとソースコードが変ってきますか。
5. n^5-n は,オンライン整数列辞典 にありますか。urlを教えて下さい。
6. url は、Fourth powers: a(n) = n^4. です。n^5-n になっていません。
7. - 数列の値が、両方間違っています。数列の値: 0, 0, 30, 240, 1020, 3120, 7770, 16800, 32760, ... OEIS のid を教えて下さい。
8. 上記の私の質問すべてから、Markdownのテキスト形式で、質問リストを出力して。追番を追加して。本質問も含めて。コピーできる形式で。空白行不要です。

いつもの? sympyの実行環境 と 参考のおすすめです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?