土壌・植生・写真の解析に興味があります

近くの植生の観察、孫のプログラミング手伝いを目指します^_^

子供さん向けの「Pythonプログラミング」で、「9桁数字難問」の回答を

2020-06-17 20:58:27 | 日記

子供さん向けの「Pythonプログラミング」で、「9桁数字難問」の回答を目指します。

  • 9桁の数100,000,000から始めて1,000,000,000まで数を増やしながら、該当数字を探す方法です。それぞれの割り切れる条件を確認していきます。
  • 多くの該当する数字があることが分かりました。
  • 横軸は該当する数字で、縦軸は次の該当する数字までの大きさ(差分)です。
  • 周期性があるようですが、数式に表現できて、該当数値を予測するまでは難しそうです。

☆計算該当数は例えば次の様で、該当数はかなり多そうです、始めだけですが、

Pythonのコードは次のような簡単なものです。

 

i=100000000

while i < 1000000000:

    s=str(i)

    a=float(s[:1])%1

    #print(a)

    b=float(s[:2])%2

    #print(b)

    c=float(s[:3])%3

    #print(c)

    d=float(s[:4])%4

    #print(d)

    e=float(s[:5])%5

    #print(e)

    f=float(s[:6])%6

    #print(f)

    g=float(s[:7])%7

    #print(g)

    h=float(s[:8])%8

    #print(h)

    j=float(s[:9])%9

    #print(j)

    k=a+b+c+d+e+f+g+h+j

    #print(k)

    i=i+1

    if k*100==0:

        print(i-1)

    #else:

       # print(k*100)

 

#のついたコードは、実行しません。(見て確認するため用)

 「 h=float(s[:8])%8」 は、数字の左から8桁の数字(文字)を数字にして、

8で割ったあまりを計算(%)、これが該当数字なら「0」のはずです。

  k=a+b+c+d+e+f+g+h+jで、それぞれの桁の数の、割り算あまりを合わせて(k)、

「k=0」なら、この数字は、問題の条件を満たしていると判断します。

コードを実行するには、PythonをPCにインストールすればよいですが、

次のURLサイトに入ると、コードをコピペするだけで、Python実行できます。

https://paiza.io/ja/ :Python実行サイトを探してください。

(確認はしておりません、インデント(スペースの開け方)調整が必要かもしれません)


スクラッチプログラミングで「9桁数字・みんな割り切れる・難問」をやってみました

2020-06-03 21:31:14 | 日記

子供さん向けの「スクラッチプログラミング」で、次の難問の回答を目指します。

プログラムは、次のスクラッチサイトにあります。

どちらも、一つ見つけるのに、20分くらいかかりました。

これは、電卓使ってどう考えてもわかりませんが、

スクラッチプログラミングなら、そのまま解くことができます。(次の2通り)

  • 9桁の数字を順次1つづつ増やしながら、問題の条件に合う数字を見つける。
  • 9桁の数字を乱数で発生させて、問題の条件に合う数字を見つける。

 

  • の方法の実行画面は次のように、

9桁の数字を順次1つづつ増やしながら、問題の条件に合う数字を見つける。

スクリプトは次のように、スタートして、メッセージが届くと、

9桁数字を9で割り切れるか、8桁数字を8で割り切れるか、

7桁数字を7で割り切れるか、6桁数字を6で割り切れるか、

5桁数字を5で割り切れるか、4桁数字を4で割り切れるか、

3桁数字を3で割り切れるか、2桁数字を2で割り切れるか を順次調べます。

スタート時に、計算を始める数字(9桁)を指定します。

このプログラムでは、該当する数字が見つかると、そこで数字を表示して停止。

さらに該当する数字を見つけるには、該当数字より大きい数字を始める数字に指定。

たとえば該当する数字は、「102000564」、「105204402」などですが、

1つ見つけるのに、20分くらいかかります。

 

  • 9桁の数字を乱数で発生させて、問題の条件に合う数字を見つける。方法は

次のようなスクリプトです。

まず9桁の数字「abcdefghi」を作ります。

次にそれぞれの桁数の数字を、桁数の数を割り切れるか、確認します。

すべての条件で割り切れた数字を「588058884」を表示して、停止します。