¶¶¶ 数学と電子計算機 ¶¶¶
■ このスレッドは過去ログ倉庫に格納されています
0001132人目の素数さん
2006/05/27(土) 10:26:04電子計算機でどんどん数学やろう!
0232132人目の素数さん
2007/06/24(日) 00:58:200233エレガントな解答を求む
2007/06/24(日) 06:01:44(EXPT 3 960) is not a function name
と出てevaれないんですけど(;´Д`)
0234エレガントな解答を求む
2007/06/24(日) 06:21:19あー なんかCでシコシココーディングするのが莫迦莫迦しくなってきた(;´Д`)
0235エレガントな解答を求む
2007/06/24(日) 08:23:22ちょっと質問です
nについての方程式:(3^960-1)/4^n∈N を解いて
解を全て列挙せよ
はどうやって解けばよろしいでしょうか?
0236orz 218
2007/06/24(日) 09:20:40>>223
式(3)(6), b >= 1, d = 0 のときのみ、 最後の-V_p(d) は -V_p(b)-m
と書きかえる。(もともとは、-V_p(b p^m + d) という項で、こう書けば場合分けはいらなかった)
よく見直すと、その -V_p(b p^m+d) の項は d がゼロのときは出ない「おつり」であることが判明 orz
V_p( C(ap^m , bp^m+d) ) = m + V_p(C(a, b)) + V_p(a-b) - ((d>0) ? V_p(d) : 0)
? : は Cの3項演算子です。これを(3)の修正版とします
>>235
4^t = 2^(2t) なんだから、あらためて解く必要はないのでは
(解くプログラムを作れという課題ならともかくとして)
なおロシア式はいまのところ割る数が素数 p (直上の議論で素数べき)にしか対応してません。
4 より 6 とかですかね
あと lisp で log に誤差がでないかちょっと心配(中で底が 2 のときは別処理してるのかな。
とすると 2 を別の数 に変えた問題で使うときは要注意かも
0239198
2007/06/24(日) 10:46:502 を 4 にするだけでいいんじゃない
>>236
> log に誤差
じゃあ素直にこんなのとか。有理数しか使ってないので安心。
(do ((x 0 (1+ x))
(y (1- (expt 3 960)) (/ y 2)))
((not (integerp y)))
(print x))
0240間違い
2007/06/24(日) 11:04:23(do ((x 0 (1+ x))
(y (1- (expt 3 966661)) (/ y 2)))
((not (integerp y)))
(print x))
でやってみて?
0242218 236
2007/06/24(日) 12:26:120243132人目の素数さん
2007/06/24(日) 13:05:240244132人目の素数さん
2007/06/24(日) 14:47:270245132人目の素数さん
2007/06/24(日) 14:52:560246エレガントな解答を求む
2007/06/24(日) 16:26:09結局
問題
>>235
は解けたのでしょうか?
0247132人目の素数さん
2007/06/24(日) 16:48:080248エレガントな解答を求む
2007/06/24(日) 17:11:50Celron 2.8GHz Mem 1GB
で約2.5秒ほどでした
http://amezolog.hp.infoseek.co.jp/source/up6057.jpg
http://amezolog.hp.infoseek.co.jp/source/up6058.jpg
目標は、あるコンピュータを使って、0.2秒くらいにチューニングすることです
0249132人目の素数さん
2007/06/24(日) 17:58:17x=3**960-1
i=0
while x%2==0: x/=2; i+=1
return i
0250エレガントな解答を求む
2007/06/24(日) 20:54:14何語ですかぁ〜?
バグってるし
0251132人目の素数さん
2007/06/24(日) 21:02:210252エレガントな解答を求む
2007/06/24(日) 21:26:45x=3**960-1
i=0
while( x%2==0){ x/=2; i+=1;}
return i
こんなかんじだったらわかるようなわからないような
眠い
0253エレガントな解答を求む
2007/06/24(日) 22:09:10x=3**960-1
i=0
while( x%2==0){
xx=x;
for(j = 0; j < i; j++, xx/=2){
if( xx%2 == 1){ printf("ATARI=%d\n", j); break;}
}
x/=2; i+=1;}
return i
こうですね
http://amezolog.hp.infoseek.co.jp/source/up6059.jpg
0.063 sec まで高速化?しました!?
0254エレガントな解答を求む
2007/06/24(日) 22:12:03def a():
x=3**960-1
i=0
while( x%2==0){
xx=x;
for(j = 0; j < i; j++, xx/=2){
if( xx%2 == 1){ printf("ATARI=%d\n", j); break;}
}
x/=2; i+=1;}
return i
こうですね
http://amezolog.hp.infoseek.co.jp/source/up6059.jpg
0.063 sec まで高速化?しました!?
0256132人目の素数さん
2007/06/24(日) 22:35:55こっちで計算したら下16バイトはこうなったんだけど
4082d184176febff4ef057ea089e1301
0257エレガントな解答を求む
2007/06/24(日) 23:26:12CPUなに使っておられますか?
当方Celron2.8G
0258エレガントな解答を求む
2007/06/24(日) 23:30:58はい 少々手抜きしております
http://amezolog.hp.infoseek.co.jp/source/up6061.jpg
0259132人目の素数さん
2007/06/24(日) 23:35:223^960 を16進表示したら下32桁はどうなるかを計算した結果が >>256
0260エレガントな解答を求む
2007/06/24(日) 23:49:40print_bignumber(int i, BIGNUMBER *X){
int j;
printf("\n%d:", i);
for(j=0;j < MAX_BIGNUMBER;j++){
printf("%08x", X->u[j]);
}
}
0261エレガントな解答を求む
2007/06/24(日) 23:50:46とやるんでしたっけ?
0262エレガントな解答を求む
2007/06/24(日) 23:52:54だと
printf("%010x",..) ???
0263132人目の素数さん
2007/06/25(月) 00:20:24octal は8進数
0264132人目の素数さん
2007/06/25(月) 00:31:51%08x でいいんじゃね?
でも足し算の実装見ると最上位ビットはキャリーフラグ用になってる?
0265132人目の素数さん
2007/06/25(月) 01:49:32>>249はpythonという言語。x=3**960-1のところもそのまま動く。
0266エレガントな解答を求む
2007/06/25(月) 06:35:02int は32bit で32/4=8だから %08xでいいんですね。ラリってました
>でも足し算の実装見ると最上位ビットはキャリーフラグ用になってる?
当たり carry も見れたほうがデバッグ上安心だと思って
>>265
python て C のbreak; 制御語みたいの使える?あと switchとか
0267132人目の素数さん
2007/06/25(月) 10:52:06switchはないけど、breakならあるよ
>>249の同値な書き換え
def a():
x=3**960-1
i=0
while 1:
if x%2 != 0: break
x/=2
i+=1
return i
0268エレガントな解答を求む
2007/06/25(月) 19:30:28因みに計算時間はどのくらいかかりますか?63msより速いでしょうか
0269132人目の素数さん
2007/06/25(月) 21:37:450270エレガントな解答を求む
2007/06/25(月) 21:45:570271132人目の素数さん
2007/06/26(火) 00:08:021000回平均で大体0.000053 〜 0.000054秒ぐらいらしい・・
一応pythonに似た言語のrubyでも計ってみたら、ほぼおんなじ関数で、平均0.000182 〜 0.000188秒くらい・・
0272198
2007/06/26(火) 00:35:53つーことで clisp にこれを評価してもらった。
(time (dotimes (a 10000)
(do ((x 0 (1+ x))
(y (1- (expt 3 960)) (/ y 2)))
((not (integerp y)))
(print x))))
Real time: 1.953125 sec.
Run time: 1.953125 sec.
Space: 59506100 Bytes
GC: 113, GC time: 0.53125 sec.
ふむ。一回だとゴミはあまり出ないとして 0.14ms?
ちなみに print しなかったら 1.11 sec ぐらいだった。
あと出力はファイルにリダイレクトしないとえらいことになるかも。
>>270
そうなの?
0273エレガントな解答を求む
2007/06/26(火) 06:46:26漏れも10回計算して平均とってみた 35ms 悔しい
でも >Space: 59506100 Bytes メモリ使い杉
時間*空間 で勝負したら負けないと思う
>そうなの
今、perl で state machine 作ってるので
elsif elsif ・・・ でプログラムが汚い
0274エレガントな解答を求む
2007/06/26(火) 07:12:18小せえな俺
0276エレガントな解答を求む
2007/06/26(火) 19:00:01lisper の方は if( if( if( if()))))))) とかに美学を感じるのですか
0277132人目の素数さん
2007/06/26(火) 19:35:54でも大掛かりなシステム組むんじゃないんだから、堅苦しいこといわないで、気軽に使えばいいと思う。
0278エレガントな解答を求む
2007/06/26(火) 19:40:36確かに、大掛かりなシステムの場合はそれが、、、
0279132人目の素数さん
2007/06/26(火) 19:43:060280エレガントな解答を求む
2007/06/26(火) 20:00:49必要なような、そうでないような、、、
0281198
2007/06/26(火) 20:27:49いや、別にそうではないが。
というか大量の分岐を直接書くこと自体が好きじゃなくて、
可能ならばハッシュ表なり配列なりを参照して済ませたいなとか思う。
0282エレガントな解答を求む
2007/06/26(火) 20:41:01ハッシュも配列も複雑すぎる木がしますぅ
0283エレガントな解答を求む
2007/06/26(火) 21:00:33を過ごしたので貧乏性なんです
0284198
2007/06/26(火) 21:35:02なんとなくわかるかも
0285132人目の素数さん
2007/06/26(火) 21:37:170286132人目の素数さん
2007/06/27(水) 16:29:06するようなプログラムなんて書いたことないや
0287132人目の素数さん
2007/06/27(水) 18:27:48「大量」ってのはどのくらいを指すんだろう?
0288198
2007/06/27(水) 21:20:33一画面に収まりきらないぐらいになると美しくないと感じる。
まあしょうがないことも多いんだけどね。パーサとか。
0289132人目の素数さん
2007/06/28(木) 02:36:19小さくまとめることも可能なんだが
そうするとかえって面倒なことになることもあるな。
0290286
2007/06/28(木) 20:47:15その後、lex,yaccに誘惑されて、、、、、、、、、、、、、、
結局今はSQLの勉強しています
0291132人目の素数さん
2007/07/01(日) 19:20:100292132人目の素数さん
2007/07/02(月) 02:44:34CPUが1MHzだったころにメモリ1k3000円で買えたっけ?
0293132人目の素数さん
2007/07/06(金) 01:00:210294132人目の素数さん
2007/07/06(金) 01:29:131k3000円ではちょっと無理かな‥
0295132人目の素数さん
2007/07/06(金) 20:38:260296132人目の素数さん
2007/07/17(火) 21:46:450297297
2007/07/19(木) 22:26:010298298
2007/07/19(木) 22:39:550299299
2007/07/19(木) 22:52:100300132人目の素数さん
2007/07/20(金) 21:44:260301デニス リッチー
2007/07/21(土) 12:05:050302カーニハン
2007/07/21(土) 12:49:490303ニクラウス ヴィルス
2007/07/21(土) 14:47:270304132人目の素数さん
2007/07/21(土) 21:20:230305ケン トンプソン
2007/07/21(土) 21:32:320306石田晴久
2007/07/21(土) 21:56:090307ビョ〜ン ストラウストラップ
2007/07/21(土) 21:58:580308132人目の素数さん
2007/07/29(日) 00:16:550309名無しさん@そうだ選挙に行こう
2007/07/29(日) 03:20:13算数しかありません、以上
0310132人目の素数さん
2007/08/01(水) 01:15:4930歳でやっとこさ旧2種通った。
0311132人目の素数さん
2007/08/01(水) 08:51:160312132人目の素数さん
2007/08/01(水) 19:19:18制度が変わるようだな
0313132人目の素数さん
2007/08/19(日) 19:09:52今申し込んだ
さて、通るかな?
0314132人目の素数さん
2007/08/19(日) 19:11:550315132人目の素数さん
2007/08/19(日) 21:45:380316132人目の素数さん
2007/08/19(日) 21:53:480317132人目の素数さん
2007/08/19(日) 21:56:57真面目にやるならそれなり鴨。
ただ、出題者も理論をさっぱり理解できていないのがこの世界。
バカでもまぐれでも答えさえ合えば良いんだよ!
0318132人目の素数さん
2007/08/19(日) 23:53:292進数なんかの計算はとりあえず必要だな。
0319132人目の素数さん
2007/08/20(月) 00:33:39つかクイックソートもバブルソートもgdgd。
「とにかく覚えとけ」だってw
そんなレベル。
0320132人目の素数さん
2007/08/20(月) 08:07:290321132人目の素数さん
2007/08/20(月) 10:02:18ソフ開の参考書にないかえ?
0322132人目の素数さん
2007/08/21(火) 07:44:17シェルソートのタイトな計算量評価は非常に難しいことが
知られている。常識だと思うんだが。
0323132人目の素数さん
2007/08/30(木) 21:39:41ぜひ教えて下され。
0324132人目の素数さん
2007/08/31(金) 14:25:210325132人目の素数さん
2007/09/19(水) 22:38:500326132人目の素数さん
2007/09/20(木) 00:32:040327132人目の素数さん
2007/10/02(火) 10:10:190328132人目の素数さん
2007/10/02(火) 11:07:080329132人目の素数さん
2007/10/07(日) 01:20:530330132人目の素数さん
2007/10/30(火) 13:52:180331132人目の素数さん
2008/01/04(金) 11:09:30■ このスレッドは過去ログ倉庫に格納されています