トップページ⇒math
28コメント13KB

数論の問題

■ このスレッドは過去ログ倉庫に格納されています
0001匿名2007/09/19(水) 12:47:11
数論の問題をたくさん教えてください。
0002132人目の素数さん2007/09/19(水) 12:55:24
2
0003にょにょ ◆yxpks8XH5Y 2007/09/19(水) 16:19:43
3
0004132人目の素数さん2007/09/20(木) 00:12:38
http://science6.2ch.net/test/read.cgi/math/1106654316/
0005四国の住民2007/10/12(金) 12:10:48
任意の正の整数を入力します。各桁の二乗を加えあわせます。出来上がった数についても同様なことをくりかえします。
この時二乗の和が1になればもとの入力した数を幸福数といいます。
たとえば365が幸福数です。
0006四国の住民2007/10/12(金) 12:45:20
下記のプログラムはAのB乗とCのD乗の和がEのF乗になるときA,B,C,D,E,Fはそれぞれ
いくらかという問題を解くプログラムです。(解の範囲は30以下としました。言語は十進BASICをつかいました。いろいろ式を自分で変えてたのしんでください。
10 FOR A=1 TO 30
20 FOR B=1 TO 30
30 FOR C=1 TO 30
40 FOR D=1 TO 30
50 FOR E=1 TO 30
60 FOR F=1 TO 30

70 IF A^B+C^D=E^F THEN PRINT A,B,C,D,E,F
80 NEXT F
90 NEXT E
100 NEXT D
110 NEXT C
120 NEXT B
130 NEXT A
140 END
0007四国の住民2007/10/12(金) 14:42:21
ある数Aがあります。Aの約数の和がA自身となるときAを完全数といいます。例えば
6=1+2+3となるので6は完全数です。28=1+2+4+7+14となるので28も完全数です。
ここで約数の和というところを約数の積とした場合には乗法完全数といいます。




0008東京都内の大学生2007/10/12(金) 15:07:21
次のプログラムはA!=B!+C!+D!+E!が成り立つときのA,B,C,D,Eの値をもとめるものです。FACT(A)はA!のことです。
桁あふれするときは十進BASICの1000桁モードを使ってください。(1000桁モードの使い方はHELP参照)
10 FOR A=1 TO 30
20 FOR B=1 TO 30
30 FOR C=1 TO 30
40 FOR D=1 TO 30
50 FOR E=1 TO 30
60 IF FACT(A)=FACT(B)+FACT(C)+FACT(D)+FACT(E) THEN PRINT A,B,C,D,E
70 NEXT E
80 NEXT D
90 NEXT C
100 NEXT B
110 NEXT A
120 END
0009東京都内の大学生2007/10/12(金) 15:09:05
10 FOR A=1 TO 30
20 FOR B=1 TO 30
30 FOR C=1 TO 30
40 FOR D=1 TO 30
50 FOR E=1 TO 30
60 IF FACT(A)=FACT(B)+FACT(C)+FACT(D)+FACT(E) THEN PRINT A,B,C,D,E
70 NEXT E
80 NEXT D
90 NEXT C
100 NEXT B
110 NEXT A
120 END
0010東京都内の大学生2007/10/12(金) 15:11:48
二重に投稿してしまいました。すみません。
0011132人目の素数さん2007/10/12(金) 15:17:15
なんちゅう効率悪いプログラムだ。
BCDEは可換なんだからもっとずっと計算量減らせるだろ。
0点。
0012132人目の素数さん2007/10/12(金) 19:01:11
FACTをGAMMAにする香具師はおらんのか?もちょっと一般化してみせい!
0013132人目の素数さん2007/10/12(金) 19:02:40
問 GAMMAにしたあとさらにp進的に成り立つことを確認せよ。
0014NPOの職員2007/10/15(月) 11:15:56
16777216という数を2つの整数の積で表してください。プログラムは下記のようになります。できたらこんどは3つの整数の積で表してください。
10 FOR X=1 TO 10000
20 FOR Y=1 TO 10000
30 IF X*Y=16777216 THEN PRINT X,Y
40 NEXT Y
50   NEXT X
60 END
0015九州に住む元公務員2007/10/15(月) 11:52:56
次のプログラムは(X^3)*Y+5*X*(Y^2)*Z+3*(Z^2)+31=3016という3変数3次の不定方程式を解くものです。 
 プログラムの先頭に書いてあるA=TIMEというのは十進BASICのTIME関数を用いてプログラム開始時の時間をAに代入したものです。
そしてプログラム終了時の最後のほうでB=TIMEとしてプログラム終了時の時間をBに代入しました。
C=B-Aでプログラム実行にかかった時間Cがもとまります。(単位は秒)
10 LET A=TIME
20 FOR X=1 TO 100
30 FOR Y=1 TO 100
40 FOR Z=1 TO 100
50 IF (X^3)*Y+5*X*(Y^2)*Z+3*(Z^2)+31=3016 THEN PRINT X,Y,Z
60 NEXT Z
70 NEXT Y
80 NEXT X
90 LET B=TIME
100 LET   C=B-A
110 PRINT C
120 END
式の形を変えていろんな不定方程式を解いてみましょう。
このプログラムでFORのところの100を200に変えてみてください。時間計算量が100*100*100から200*200*200にすなわち約8倍になるはずです。
興味があれば計算量の理論(計算複雑性の理論ともいいます。)の勉強もしましょう。  

001650歳代のSOHO事業者2007/10/15(月) 12:06:13
次のプログラムは最後の4桁が1361で終わる平方数を求めるプログラムです。
10 LET X=1
20 LET X=X+1
30 LET Y=X*X
40 LET Z=Y-10000*INT(Y/10000)
50 IF Z<>1361 THEN GOTO 20
60 PRINT "X=";X,"X*X";X*X
70 END
001750歳代のSOHO事業者2007/10/15(月) 12:32:00
次のプログラムは最後の3桁に0以外の同じ数が並ぶ平方数を計算するプログラムです。
10 LET X=10
20 LET X=X+1
30 LET Y=X*X
40 LET Z=Y-1000*INT(Y/1000)
50 IF Z=0 THEN GOTO 20
60 LET A=Z/111
70 IF A<>INT(A) THEN GOTO 20
80 PRINT X,Y
90 IF X>10000 THEN GOTO 110
100 GOTO 20
110 END

0018132人目の素数さん2007/10/15(月) 18:23:41
ビットシフト使えば高速化できるのにフゥ
0019九州に住む元公務員2007/10/16(火) 10:25:10
2007/10/15日付 九州に住む元公務員で3変数3次としたところを3変数4次に訂正します。
Xだけに着目すれば3変数3次でもかまいませんが。
0020東京都内の中小業者2007/10/16(火) 10:45:33
下記のプログラムは自己愛数をみつけるものです。自己愛数とはN桁の数について各桁のN乗の和が自分自身になる数のことです。
例えば153=(1^3)+(5^3)+(3^3)は自己愛数です。自己愛数のことをアームストロング数あるいは完全数字変換ともいいます。
10 FOR I=100 TO 999
20 A=INT(I/100)
30 B=INT(I/10)-10*A
40 C=I-100*A-10*B
50 IF I<>(A^3)+(B^3)+(C^3) THEN GOTO 70
60 PRINT I
70 NEXT I
80 END
0021東北の住民2007/10/17(水) 13:03:00
次のプログラムはフィボナッチ数をもとめるものです。フィボナッチ数とはA(x+2)=A(X+1)+A(X)が成り立つ数つまり、現在の項が一つ前ともう一つ前の項の和になっている数のことです。
但し出発点の数はA(1)=1,A(2)=1とします。いろいろと規則を変えて自分なりに楽しんでください。
10 DIM A(100)
20 LET A(1)=1
30 LET A(2)=1
40 FOR X=1 TO 100
50 LET A(X+2)=A(X+1)+A(x)
60 PRINT X+2,A(X+2)
70 NEXT X
80 END
0022関東地方に住む会社員2007/10/17(水) 14:44:10
数論でファクトリオンという数があります。ファクトリオンとは各桁の階乗の和が自分自身になる数のことです。
例えば145=1!+4!+5!ですから145はファクトリオンです。各桁の階乗の積が自分自身になる数を第二種ファクトリオンといいます。
下記のプログラムは各桁の階乗の和が自分自身の整数倍となる数を求めるプログラムです。このような数を一般化ファクトリオンと呼んでは
どうでしょうか。プログラムを実行してみればわかりますが例えば997は733に対応する一般化ファクトリオンです。(それともすでに命名されているのでしょうか。)。
なおプログラム中ではSTR$とかVALとかLENなどの文字列関数が使われていますがそれらについては
十進BASICのヘルプを見てください。例えばLENはこのプログラムの場合文字列G$の文字数(長さ)を求めるものです。
10 FOR A=1 TO 10000
20 lET Z=1
30 LET G$=STR$(A)
40 LET Y=LEN(G$)
50 FOR F=1 TO Y

60 LET M$=G$(F:F)
70 LET C=VAL(M$)
80 LET V=FACT(C)
90 LET Z=Z+V
100 NEXT F
110 FOR S=1 TO 6000
120 IF S*A=Z THEN PRINT S,A
130 NEXT S
140 NEXT A
150 END


0023関東地方に住む会社員2007/10/18(木) 11:17:10
先日のファクトリオンに関する記事で行番号20のところでZ=1をZ=0に訂正します。
これとならんで例えば120に対応するファクトリオンは6になります。
0024関東地方に住む会社員2007/10/18(木) 11:30:21
下記のプログラムは分割数(PARTITION  NUMBER_)を計算するものです。
分割数とは例えば4の場合4=4+0=3+1=2+2=2+1+1=1+1+1+1であるため4の分割数は5です。5の分割数は7です。6の分割数は11です。
10 LET S=0
20 FOR A=0 TO 5
30 FOR B=0 TO 5
40 FOR C=0 TO 5
50 FOR D=0 TO 5
60 FOR E=0 TO 5
70 IF A+2*B+3*C+4*D+5*E=5 THEN PRINT A,B,C,D,E
80 LET S=S+1
90 END IF
100 NEXT E
110 NEXT D
120 NEXT C
130 NEXT B
140 NEXT A
150 PRINT "S=分割数=”,S
160 END
0025匿名2007/10/19(金) 14:32:21
ファクトリオン=階乗子です。
0026132人目の素数さん2007/10/19(金) 14:55:12

ファクトリオンは明らかに有限個しかない。
 なぜなら、ファクトリオンが(k+1)桁だとすると、
n≧10^k であるが、
ファクトリオンであることより、
n≦9!+9!+9!+ ... +9! = (k+1)9!
つまり、 (k+1)9! ≧ 10^k ・・・☆
知ってのとおり、 k = o(10^k) が成立するので、
   (つまり、 k/10^k → 0 (k→∞))
nは上に有界であり、さらに☆を評価することで、
   探査範囲を具体的な値で抑えることができる。
  したがって、(私的には)その問題はそれで終わり。


ここに数論の問題がたくさんあるからオススメ。
http://myhome.cururu.jp/gersdorffite/blog




0027四国の住民2007/10/23(火) 12:06:58
10 REM OR(オペレーションズ リサーチ=経営科学)の問題をひとつ。
20 REM あるスポーツ用品メーカーではバレーボール、サッカーボール、テニスボールをつくっています。
30 REM バレーボールは一個につき150円、サッカーボールは120円、テニスボールは30円の利益があります。
40 REM バレーボール一個につき原料Aを3単位、原料Bを4単位、原料Cを5単位、必要とします。サッカーボールについては一個につき
50 REM 原料Aを5単位、原料Bを3単位、原料Cを4単位、必要とします。テニスボールについては、一個につき原料Aを2単位、原料Bを3単位、
60 REM 原料Cを3単位必要とします。原料Aの供給可能量は一日あたり20単位、原料Bは25単位、原料Cは15単位です。
70 REM 以上の制約条件のもとで売上利益を最大にするには各ボールを何個作ればよいでしょうか。プログラムを作ってといてみました。
80 LET MAX=0
90 FOR X=0 TO 10
100 FOR Y=0 TO 10
110 FOR Z=0 TO 10
120 IF ( 3*X+5*Y+2*Z<=20) AND (4*X+3*Y+3*Z<=25) AND (5*X+4*Y+3*Z<=15) THEN
130 LET MAX2=150*X+120*Y+30*Z
140 END IF
150 IF MAX2>MAX THEN
160 LET MAX=MAX2
170 PRINT "MAX=",MAX,X,Y,Z
180 END IF
190 NEXT Z
200 NEXT Y
210 NEXT X
220 PRINT MAX
230 END
0028四国の住民2007/10/23(火) 13:25:45
前述の経営科学の問題で説明不足を補足します。
まずこれはLP問題(線形計画法)です。
目的関数はMAX2=150*X+120*Y+30*Zです。
制約条件式はプログラム中でANDの前後の3つの不等式です。
■ このスレッドは過去ログ倉庫に格納されています