アカウント名:
パスワード:
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
ソースを見ろ -- ある4桁UID
腕試し (スコア:2, 参考になる)
回答者のことではありません。問題が無茶苦茶なのです。
直接ではありませんが、これも日本のIT技術者のレベルの低さを表しているようにも感じられて、……やっぱり悲しむべきことなのでしょうか。
Re:腕試し (スコア:0)
疑問に思いました。
問い5の素数かどうか求める最も効率的なものという設問です
√91にもとめるのに必要な計算量って結構多きいのではと思い
Re:腕試し (スコア:1)
整数の問題の場合、半分の桁数の数よりちょっと多い数、としてかまいません。
今回だと、√91=10とすればいいので、
そんなに計算量はいりません。
さらに、
今回の選択肢だと、すでに√91は与えられていると考えても
いいかもしれません。
#でも、こういう問題はどの程度までこっちの意図が通じるかわからないのできらい。
Re:腕試し (スコア:0)
例えば√91を求めるのに1*1、2*2、3*3と増やしていって
91を超えるまで10*10にたどり着くのにかかる計算量が
大したことないって話ですよね?
掛け算は掛ける数の回数足し算をやっていると聞いたことがあります。
本当に、内部的なCPUレベルの処理時間、計算効率といった部分で
秀でているのか疑問に思ったのです。
でっちあげですが例えば
Re:腕試し (スコア:1)
>91を超えるまで10*10にたどり着くのにかかる計算量が
>大したことないって話ですよね?
たぶん違います。
91ならlog_10(ここでは、10を底とする対数)は1よりちょっと大きいくらいでしょ。せいぜい2くらい。
だから√91はその半分、せいぜい10^1と求められるってことです。
あとは、1~10までの数字で割れるかどうか確かめればいいってことです。
log_10っていうのは、基本的にはケタの数ですから、
入力値の文字数を調べればいいんですよ。
だから、かけ算はいらない。
割り算の効率については条件同じなので省きます。
#ただ、ここでは91が文字列で与えられるという仮定をしてます。
#この仮定が崩されると対数の概数を求める際の割り算が発生します。
Re:腕試し (スコア:1)
log_{10}にこだわるならともかく,この問題ではlog_{2}で考えれば十分ですから文字列である必要はないでしょう。
Re:腕試し (スコア:1)
ベンチマークしたよん (スコア:0)
がどうとかでてくるので実際に使う一般的な高級言語(Java)でテスト
public class Test {
private static boolean calc1(int num ) {
int loop = num/2;
for( int i=2 ; i<loop ; i++ ) {
if( num%i==0 ) {
return false;
}
}
Re:ベンチマークしたよん (スコア:1)
for(int i = 2; i * i < num; i++)
とか
int loop = 1;
while(loop * loop < num){ loop += 1; }
for(int i = 2; i < loop; i++)
の方が速いんじゃない?って話だったと思うんだけど。
Re:ベンチマークしたよん (スコア:0)
91を勝手に素数と思いこんでおりました。
素数で再度調査した結果calc2が早っすね。
なんだか残念。calc3は忘れて下さい・・・。
主題は一応sqrtとそのループ数の合計処理速度vs単純に/2とそのループ数の合計