大整数電卓ツール・数式計算

C入力文字列を数式として認識評価し計算を実行します
ホームへ
大整数電卓ツールへ

新しく「コラッツ予想」用に追加しました

コラッツ予想関連で新たに考察を追加
コラッツ数列を逆向きに考察
奇数偶数の連続サイクルについて考察

「#」

コラッツ予想の基本計算値を返します
「#(・・)」カッコで括られた値が偶数なら2で割り奇数なら3倍してから1を足した値を返します
例:
[:a=d:0=b:0=i:y(a):q(1000):t(d-1)i(i+1)b(?(?(d-b),d,b))y(v(d(#(d)))):]:z(i)v(b)v(a):a+1=a_next:y
入力Aの値を初期値としてコラッツ数列を計算してyスタックに積みます。
結果が1になるか1000回を超えたで終了します
最後にスタックyの値をカンマ句切で表示します

「$」

自分より小さい数になるまでのステップ数を返す

「^」

自分より小さい数になるまでのステップ数が循環する基数の2の乗数を返す

「~」

1になるまでのステップ数を返す

スタックメモリ:

記憶領域とは別に数値を積んでいくメモリで直接には計算に使用できません
新たに「o」で要素番号で値をセットできるようになりました
「y」はスタックへデータを積みます
例:
「y(・・)」カッコで括られた値をスタックに積みます
「y(・・,・・,・・)」カッコ内カンマ区切りで複数の値を初期値として登録できます
「y」単独ではスタック内の値をカンマ区切りで返します

「o」はスタックのデータを返します
「o(要素番号)」カッコで括られた番号のスタックデータを返します,データは削除されません
番号はゼロから要素数ー1までです
「o(マイナス値)」マイナスを指定するとスタックに最後に追加された値を返しスタック内のそのデータを削除します
「o(要素番号,更新値)」要素番号と新たに代入する値を指定※ただし返す値は前の値です
「o(要素番号,更新値,コメント,名前)」更にコメントと要素番号に名前を付けます
「o」単独ではスタックのデータ個数を返します
例:
y(1,2,3):123=a:456=b:y(a):y(b):y(a+b):y:o
結果yは1,2,3,123,456,579となりoは6です
例:
:o(-1)+1:o
結果aは580でoは5になります
例:
:y:o:o(1,55):y:o
結果yは1,2,3,123,456でoは5、o(1,55)は2を返し55をセットするので
yは1,55,3,123,456でoは5のままです。 ※指定は要素番号、代入値ですが’,’句切で英数字文字列を追加してもエラーになりません
例:
:o(1,33,reidai_o_dainyu):y:o
55が33に置き換わりyは1,33,3,123,456でoは5のままです。 ※a~kのメモリを代入値に使う場合や演算は必ずカッコで括ってください :22=a:o(1,(a+15),reidai_o_dainyu):y:o
33が37に置き換わりyは1,37,3,123,456でoは5のままです。 :o(1,10,reidai_o_name,data_1):o(3,555,o_name_2,yahho):y:o(data_1):o(yahoo)
37が10に123が555に置き換わりyは1,10,3,555,456でo(名前)は10と555を返します。

最大公約数:

「<」はカッコで括った2個の数値の最大公約数を返します
例:
<(154,70)
結果は=14

最小公倍数:

「>」はカッコで括った2個の数値の最小公倍数を返します
例:
>(154,70)
結果は=770

コメント:

「/**/」は「/*」に続けてコメント記述し「*/」で終わります。
数式計算実行時には自動で削除されるので他のテキストエディターで編集しコピー・ペーストで張り付けて実行するような使い方になります
※一行にコメントは一個です。複数入れる場合は改行してください
※コメントを使わずに全角文字を入れると以後が全て削除されます
例:
>(154,70)/*最小公倍数です*/
結果は=770

繰返し:

「L」は直前の式を指定回繰返し実行します「l(・・)」必ずカッコで括ってください(1000回以上の指定はできません)
※直前の式は必ず1回は実行されLで結果としてLで指定した回数プラス1回実行されます。

「Q」は直後の式を指定回繰返し実行します「l(・・)」必ずカッコで括ってください(1000回以上の指定はできません)
※直後の式はQで指定した回数が0以下なら実行されず、その次の式から実行が再開されます。

途中でループを抜けるには
「w(・・)」で値が0の時「t(・・)」で値が0かマイナスの時ループを抜けます
※それぞれループ内の結果はC に改行して追加されてます
例:
1=a:3=b:0=d:d(a+b+d)a(a+1)b(b+2):l(b):d=d_total
先に前の式が実行されるのでループは3+2で5回実行されます結果Dは87
1=a:3=b:0=d:q(b):d(a+b+d)a(a+1)b(b+2):d=d_total
ループは3回実行されます結果Dは30

判定:

「?(・・)」は値が1以上なら1を返しゼロ以下ならゼロを返します
「!(・・)」は値が1以上ならゼロを返しゼロ以下なら1を返します
「?(・・,・・,・・)」は','句切で要素3個を指定で第一要素判定で1以上なら第二要素ゼロ以下なら第三要素を返す
※各要素は判定の如何に拘らず評価されるのでIF文の様な使い方はできません
例:
n(2)=e:n(2)=f:?((e-f),a(e),a(f))
カッコは右から評価されるのでAにFがセットされ次にAにEの値がセットせれ結果として判定要素常に関係なくAには常にEの値がセットされます
正しくは
大きい方をAにセットは
n(2)=e:n(2)=f:?(?(e-f),e,f)=a
小さい方をAにセットは
n(2)=e:n(2)=f:?(!(e-f),e,f)=a

qの繰り返しと組み合わせるとプログラムのIF文のような使い方ができます
例:
n(2)=e:n(2)=f:q(?(e-f)):a(e+a):q(!(e-f)):a(f+a)
2桁の乱数をEとFにセットして大きい方の値にAを足した値をAにセットします

ゼロのみを判定基準にしたい場合は's'の絶対値を利用します
例:
n(2)-50=b:?(s(b))
bがゼロの時のみゼロを返しマイナスでも1を返す

結果表示の制御:

「[」単独指定で結果表示をキャンセルします
「]」単独指定で結果表示を再開します
例:
1=a_start:10=b_end:[:0=d:q(b-a+1):a(a+1)d(d+a):]:d=d_total
ループ中の結果表示がキャンセルされます

演算子:

使える演算子は「+」「-」「/」「*」「%」です
例:
1+2-3+4*5+6%7+8/2 
結果は30です

計算順:

通常の計算式と同じでカッコも使用できます※カッコは右から評価されます
※演算子は通常通り左からですがカッコは右からネストされてる場合は一番内側から実行されます
例:
((1+2-3+4)*5*((6+7)%8))/2 
結果は50です

記憶領域tと代入:

入力及び記憶領域「a」から「k」も計算式内で使用可能で代入もできます「c」は代入先のみ
代入先文字に続けて半角文字と'_'で注釈を記述が可能で結果表示に反映されます
「a(・・)」記憶領域名をカッコで括って指定するとカッコ内の値を指定領域に代入します(注釈不可)
※ループ処理内では注釈不可です
例:
a+b+d+e+f+g+h+i+j+k+10=f
例:
a+b+d+e+f+g+h+i+j+k+10=f_total
例:
f(a+b+d+e+f+g+h+i+j+k+10)

複数の計算式:

「:」句切で複数の式も記述可能です左から順に実行されます
例:
123=d:2=e:(d)*(e)=a:(d)-(e)=b 
結果は「a」に246「b」に121が代入されます

平方根(ルート):

ルートも使えます「r(・・)」必ずカッコで括ってください
例:
3=d:4=e:r((d)*(d)+(e)*(e))=a 
直角三角形の斜辺の長さを求める式で答えは5で「a」に代入されます

乱数:

文字数を指定して乱数を得る「u」は先頭が「0」も可「n」は不可で「u」も文字数としては必ず指定数を返します(足らない分は先頭から「0」で補う) 「n(・・)」「u(・・)」必ずカッコで括ってください
例:
n(15)=a:u(15)=b 
結果「a」には15桁の乱数(※「0」はない)が「b」には最大15桁の乱数(※「0」もあり)が代入されます

素数:

「p」は対象数値より大きい数値で一番近い素数を得る「p(・・)」必ずカッコで括ってください
「m」は対象数値より小さい数値で一番近い素数を得る「m(・・)」必ずカッコで括ってください
例:
p(n(8))=a:p(a)-(a)=b
8桁の素数を「a」に代入:「a」の次の素数を求め元の「a」との差を「b」へ代入します

数値表示:z

カッコ内の値を表示
「z(・・)」カッコで括って指定するとカッコ内の値を表示できます
但し計算自体には影響しません

数値16進表示:x

カッコ内の値を16進表示
「x(・・)」カッコで括って指定するとカッコ内の値を16進表示できます
但し計算自体には影響しません

素因数分解:v

カッコ内の値を素因数分解して表示
「v(・・)」カッコで括って指定するとカッコ内の値を素因数分解した結果を表示できます
但し計算自体には影響しません(30029以下の小さな素数のみに対応)
例:
v(v(n(4))+v(n(4)))
二つの4桁の乱数をそれぞれ素因数分解し足した値も素因数分解して表示
⇒V=8653=17,509
⇒V=4470=2,3,5,149
⇒V=13123=11,1193
結果は=13123

注意点:

整数電卓なので少数以下切り捨てでこの式は「0」になります、割り算には注意が必要です
例:99/100*100 
結果は0です99/100が既に0です

特殊:

この式評価は基本文字列として扱うので次の例はエラーになりません
例:
(1)(2)r(9)r(16)56789 
結果は123456789になります

この特殊な点を生かすと特定の乱数を簡単に作れます
例:
n(2)7n(8)(b-b(u(1))%2+1)=a
最後が奇数で先頭から3番目が7の12桁の乱数がAにセットされます

大整数電卓ツールを使ってみてください