ここから本文です

3のa乗+4=7のb乗となる整数組を求め、printするプログラムを教えてください。 言...

アバター

ID非公開さん

2019/7/523:16:19

3のa乗+4=7のb乗となる整数組を求め、printするプログラムを教えてください。
言語はPythonです。

閲覧数:
16
回答数:
1

違反報告

ベストアンサーに選ばれた回答

aoh********さん

2019/7/722:31:11

a = 1, b = 1が解であることは明らかです。
また、若干の数学的考察により、a, b ≦ 0には整数解がないこと(a, b ≦ 0では、左辺は4以下にはならず、右辺は1以上にはなりません)が解ります。

そこで、2以上のaについて、条件を満たすbが存在するかが問題です。

3^a ≒ 7^bと考えれば、a * log10(3) ≒ b * log10(7)です。
log10(3) = 0.47712125471966243729502790325512
log10(7) = 0.84509804001425683071221625859264
ですから、bの値としては「aの0.57倍程度まで」を考えれば良いです。

また、a, b > 1ですから、(3^a + 4)は最低限7の倍数であることが条件です。

この条件で絞り込むだけで、1000以下のaに解がないことが解ります。
このとき、bは560くらいを考えていますから、これより大きいaに解があるとすれば、7^500を約数に持たねばなりません。


実際には、7^5 = 16807の倍数に絞っても候補は大幅に少なくなります。
50000以下のaについてならば、11413、25819、40225に限られ、いずれも条件を満たすbは存在しませんでした。

以下、プログラムです。インデントは_で置換しています。
コメントアウトしてあるのが、a ≧ 1000をチェックするための変更点です。
Pyhtonの仕様は存じませんけど、PCレベルでももう少し先まで計算できそうです。

a = 0
#a = 1000
while 1:
_b = int(a * 0.57 + 1)
_s = 3**a + 4
_d = 7
#_d = 7**5
_if s % d == 0:
#__print("Hit? a = ", a)
#__print("Hit? b = ", b)
__while s <= 7**b:
___if s == 7**b:
____print("a = ", a)
____print("b = ", b)
____break
___b -= 1
#__print("NO Hit b = ", b)
_a += 1
_if a > 1000:
#_if a > 50000:
__break

アバター

質問した人からのコメント

2019/7/8 11:45:25

ありがとうございます。勉強頑張ります。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる