アカウント名:
パスワード:
とすれば、√91越えたところでループを抜けますが。。 そういうはなしじゃないのかなぁ。。。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
※ただしPHPを除く -- あるAdmin
腕試し (スコア:2, 参考になる)
回答者のことではありません。問題が無茶苦茶なのです。
直接ではありませんが、これも日本のIT技術者のレベルの低さを表しているようにも感じられて、……やっぱり悲しむべきことなのでしょうか。
Re:腕試し (スコア:1)
実戦的ですね。
というわけでちょっと見てみたんですけど・・・。
情報処理試験の問題みたいですね。
Re:腕試し (スコア:0)
それで思い出したけど、同系のシリーズの、これ [nikkeibp.co.jp]とかこれ [nikkeibp.co.jp]もなかなかの出来で泣けてきます。
後者のCASLのプログラムがちゃんと動くかどうか追っかけてみてくださいな。
Re:腕試し (スコア:1)
ただ,満点とった訳じゃないんでえらそうなことは言えないかも.
kero
Re:腕試し (スコア:0)
なんて言われているわけですからそのあたりは仕方ないかと…
ペーパー試験で立派な技術者になれるのなら苦労はないわな
Re:腕試し (スコア:0)
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とそのループ数の合計
Re:腕試し (スコア:1)
# 素数判定は昨年ついに多項式時間のものが発表されましたね。
-- 哀れな日本人専用(sorry Japanese only) --
Re:腕試し (スコア:0)
> 問題文:91が素数かどうかを判定する方法として、最も効率的なものはどれですか?
> 選択肢:2~√91までのすべての整数で割ってみればよい。
割る数をaとすると、
a^2 > 91
になった時点で√91を越えたことになる。
これなら平方根を求める計算もいらないし。
えと、そういう疑問ではないですか……(汗
Re:腕試し (スコア:1)
for (a:=2;a< ??;a++) みたいなループじゃなくて、 どうせなら、
do {
略
b=91/a;
略
}while(b>a);
とすれば、√91越えたところでループを抜けますが。。 そういうはなしじゃないのかなぁ。。。
Re:腕試し (スコア:0)
7で割るからいいのか?
あー、そーですか、はいはい
Re:腕試し (スコア:0)
むしろ問題なのは、√91に達する前に素数か否かの判定が出てしまうことのような気が。
Re:腕試し (スコア:0)
| 問題が無茶苦茶なのです。
あれはきっと、読者が問題作成者の実力を判定するテストなんですよ。
Re:腕試テスト (スコア:0)
~ネットワーク・テスト・エンジニア・ランキングキャンペーン
ディジタル・カメラやモバイル・バッグが当たる期間限定特典
http://advanced.comms.agilent.com/quiz/local/JPN/game/game.htm