kakashi-blog・カカシブログ・

Python備忘録を書きドローンやバイクなど好きな事で生きて行こうとしているブログ

python プログラミング 未分類

カプレカ数をpythonで求める

投稿日:

カプレカ数とは

まず6174を例にとってみます。

’6’、’1’、’7’、’4’と桁を関係なく数字をバラバラにします。

その数字の並び替えを[最大]と[最小]になるように並び替えます。

・最大 7641(3番、1番、4番、2番に並び替え)

・最小 1467(2番、4番、1番、3番に並び替え)

その後 [最大]ー[最小]=元の数字 になるものがカプレカ数となります。

7641ー1467=6174

※4桁はこの数字以外は存在しません。

 考え方は実にシンプル


退屈なことはPythonにやらせよう 第2版 ―ノンプログラマーにもできる自動化処理プログラミング

一個ずつ計算して証明してみる

めんどくさすぎなのでpythonで書いてみます。

(学習題材としては良い課題になるのではないかと)


import copy

num=0

while num<=99999999999999999999: #20桁求めてみる
    n=[]

    for i in range(len(str(num))):
        n.append(str(num)[i])
    
    n.sort()             #並び替え(小さい順)
    s=copy.copy(n)
    n.sort(reverse=True) #並び替え(大きい順)
    s=(''.join(s))       #リスト内の並び替えた数字を1つの数列へ
    n=(''.join(n))       #リスト内の並び替えた数字を1つの数列へ
    kap=int(n)-int(s)    #最大ー最小
    
    if kap==num:         #カプレカ数なのか判断
        print(num)
    num+=1

簡単に書いてみた。

出力結果

0
495
6174
549945
631764

やけに少ないと思った方もいると思います。

もちろん全てではないです。

数秒で5個は出てきますが、そのあとは時間がかかりすぎるので途中でやめました。
5分回しても6個目が出てこない、20桁なんて夢でした・・・

時間をかければでますが、何か別の法則で求めないと無理そうですね。

需要はなさそうだけど備忘録として保存しておきます。

専門家ではないので、何か誤りなど見つけた方ご指摘いただけると助かります。

-python, プログラミング, 未分類
-, ,

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

今マスクが手に入りにくくなっている。店に在庫が無い。

  3M 使い捨て式防じんマスク 8577-DL2 10枚入り 国家検定合格品 8577 DL2   コロナウイルスの影響で、中国はおろか日本国内のマスクの在庫も枯渇している。 影響は意外なところにま …

子供がズルをするので計算カードをpython(Tkinter)で作った

うちの小学1年生の子の宿題に「計算カード」があります。 学校からは、「時間を計ってやりなさい」と言われているようです。 もちろん計算なんかせず、めくる事が目的になって、 どれだけ早くめくれるか。みたい …

ソフトバンクからワイモバイルにiPhoneで乗り換える方法(MNP)

現在iPhone7を使用中、番号そのまま(MNP)ソフトバンクからワイモバイルに乗り換えたので自分なりにまとめます。   何から始めればいいのか 結構大事なことだけど、あまり書かれていないので書いてお …

Python備忘録 Tkinter編① 

Tkinterとは キーボード操作だけでなく、 マウスを使用した操作が可能なウィンドウやボタン、入力欄など GUI を比較的簡単に 作る事が出来るライブラリ   退屈なことはPythonにやらせよう …

Amazonはスクレイピングが禁止。seleniumでデータ収集をしてみた

pythonでコードを書いて、AmazonのサイトからASINコードと金額のデータを、普通にスクレイピングしてみたけど出来なかった。(バグだと思って何時間も無駄にした) どうやらAmazonのサイトは …