« 第51問 くまぷー先生の日曜日の補習授業 解答例 | メイン | 第53回 十枚の領収書(その2) »

2010年3 月 4日 (木曜日)

コメント

y sakuda

1セルでやるとすると、厳しいかな?

くまぷー

さて他のみなさんは何て仰るか・・・

jyo-3

ただいまーーーー
ん、、、

算数は、好きだが、、、
これ、、、数学だなーーー
どひゃーーーー

って、
互いに素、、、、、、

そ、そ、、、それから、、意味を考えねば…・

y sakuda

2~1000限定なら何とかなるかも・・・・

jyo3

> 2~1000限定なら何とかなるかも・・・・

あ、、あは・・・・

はぇーーー

y sakuda

甘かった・・・・・

jyo-3

これも、、、

本職と、、、関連の、、匂い・・・・・

だが、、、高等な、、、数学、、、むむーーーー

y sakuda

合っているのかどうか定かではないし、ダサくかつ長大なしろものですが、出来たつもり・・・・
139

y sakuda

ダイエットすれば100前後にはなりそうですが、検証方法考える方が先だな・・・・

y sakuda

一応、93までダイエット
今晩か明日検証方法を考えますが、合ってなかったらちょっとショックかも^^;
それにしてもminさんむ印さん出てこないし、肝心なsupermabさん見てないのかな・・・

y sakuda

EWで呼んでみたw

ジョー3

まだ意味わかってない、、、みたい、、わたし。。

y sakuda

>まだ意味わかってない、、、みたい、、わたし。。
互いに素とは、1以外の公約数がない数字のペアと思ってよろしいかと思います。

くまぷー

>EWで呼んでみたw

ありがとうございます。
supermabさんが現れないのは
私が無神経だったからだと実は
気に病んでいます・・・

supermabさんの許可を得ずに
「関数で出来ますか~?」と違うところで
取り上げてしまいました・・・
ご免なさいです・・・

jyo-3

>ご免なさいです・・・
ん、、、すんぱいないと、、、おもう、、、
忙しいだけでしょう……

y sakuda

検証プログラム作って見たら、やはりおかしかった・・・・・
やはり甘くないですねーー
原因は分かったけど、上手く直せるかな?

y sakuda

寝ようと思ったけど、悔しいから取りあえず修正しましたが・・・・・・
無茶苦茶重くなって、1回の計算に0.5秒くらいかかって、わずか1000までのチェックが延々と継続中。
コンピュータがやっているとは思えないスピードw

くまぷー

>コンピュータがやっているとは思えないスピードw

それでもなんとか式が作れれば
たいしたもんだと思う・・・

y sakuda

93を改造して103
一応1000まで検証プログラムと意見が一致しました。
が・・・・検証プログラム合ってるのかな?

supermab

気がついてませんでした ^^;;;

しかーし、103 とか・・・

ワンセルでは出来ないと思っていたのですがぁ~

supermab

でも、関数で出来ますか?ではないので、

作業セルを使って解いたりいろいろアリですね。

面白いかも~

先に出題者解答例を出してしまいましょうか?
ワンセルではないけど・・・

supermab

アップしました↓

URL(本人の依頼により削除)

初歩的な方法ですが、φ関数の意味が
判りやすくなるんじゃないかと思います。

ワンセル関数の検証用に使えるかもw

F9キーで数値が変わります。

y sakuda

↑にアップするのはまずいと思います
>ワンセルでは出来ないと思っていたのですがぁ~
何とかなったつもりですが・・・・・
合ってるかな?

y sakuda

チェックプログラムをチェックするために、私のチェックプログラムでsupermabさんのファイルをチェックして見ました。
チェックOKと出ましたので、私のチェックプログラム合っていると言うことになります。
だから、スピードはともかく私の103大丈夫見たい^^
#何回チェックって書いたかな、この記事・・・

ジョー3やminmaxさんがやるかもしれないので、私の103はもう少し伏せて置き、ダイエットできるかどうか考えます。

くまぷー

では、参加者があと2人増えて3人になったら
これを急遽、「関数で出来ますか~?」の
第52問としましょう(^^ゞ

y sakuda

>3人
mabさんは別として、ジョー3とくまぷーさんで3人w

jyo-3

>第52問としましょう(^^ゞ
ふふ、、、
・・・・・・そかそか、、、

くまぷー

>ジョー3とくまぷーさん

いやあ、ジョー3さんはともかくおいらじゃ・・・

minさん、む印さん、からくちさんとか・・・

min

構想はあるが、式にするのが難しいですね。
ということで、私は、、、

今日長男の高校の卒業式に参加(長男は出席できませんでしたが)して特別な思いがありました。
くまぷーさんとこは終わりました?

y sakuda

>ということで、私は、、、
minmaxさんは今回リタイアですかね?
とすると、たよりはやはりくまぷーさんですね。
からくちさん、む印さんは覗いてないのかな?
私はやったことはやりましたが、どう考えてももっとエレガントなやり方がありそうだと・・・・・

くまぷー

>くまぷーさんとこは終わりました?

まだです。月曜です。

>たよりはやはりくまぷーさんですね。

おいらはぜんぜんダメです (T.T)

y sakuda

>おいらはぜんぜんダメです (T.T)
だめですかーー
明日の晩あたりまでにどなたか名乗りでない時は、あきらめて晒しちゃいましょうか?

くまぷー

 ↑
そうですね~
む印さん、からくちさん、見ていないのかな~

ジョー3さんはどうですか~?

y sakuda

ダイエットできない・・・・・

jyo-3

ただいまーーー
さて、ちょっとやってみようかなーーー

くまぷー

ジョー3さん、進行状況は如何でしょう?

>ただいまーーー

こちらはこれから体育館に・・・
行ってきま~す (^o^)/~~~

ジョー3

ただいまーーー
お昼ちょっとやったが、、駄目だったです。

さて、
碁をまず、、・・・・

y sakuda

なんか、ジョー3難航してるみたいだな・・・
碁の後飲んじゃうと・・・・・

ジョー3

>碁の後飲んじゃうと・・・・・

あ、、ああ、、あた・・・・・・・

y sakuda

さて、くまぷーさんどうしましょうか?

supermab

ファイルのプロパティーを見ると解るように
この問題は、昨年の4月に作りました。

y_sakuda さんの出された
素数判定問題を拡張したものです。

その後、オイラーのφ関数を利用するものとして、
RSA暗号化・多倍長整数などといじっていくことに・・・

あ!それと

>↑にアップするのはまずいと思います

自分のサーバーに移したほうがいいでしょうか?

y sakuda

>自分のサーバーに移したほうがいいでしょうか?
mabさんがアップすること自体は問題ないのですが、あそこはEW外にはアドレスを公開しないことになってますので・・・・


supermab

>あそこはEW外にはアドレスを公開しないことになってますので・・・・

なるほど!

くまぷーさん、リンクの削除 or 変更お願いします m(_ _)m

くまぷー

>さて、くまぷーさんどうしましょうか?

ジョー3さんが取り組んでいるのなら
もう少し待ってもいいかと思います。

>くまぷーさん、リンクの削除 or 変更お願いします m(_ _)m

了解しました。
このスレのトップからDLできるようにします。

y sakuda

>もう少し待ってもいいかと思います。
了解でーーす^^

y sakuda

もう一つできました。
が・・・・
もちろん短縮を狙ったアイデアなのですが、結局考え落ちだらけで、そこを補正してったら、146
まあ、当然ダイエットはできるでしょうが、100アンダーは無理っぽい雰囲気です^^;

くまぷー

む印さんや、からくちさんから何もないから
sakudaさんの解答発表は今夜くらいですかねぇ・・・
それにしてもオイラーのファイ関数を
ワンセルで作ってしまうとはぶったまげました!

jyo-3

むむ・・・・ちょっとやったが、、だめだった。

そーかーーー
素数も、、忘れた。
うーーん、、、
学んでいない。・・・・・

jyo-3

うーーん、、、

理屈的には、、簡単に思えた。

だが、、
1)それを実行する関数が・・・・なんだい?(難題)

2)関数の動きが、、・・・・
(エクセルとまだ、親しくなってない?)

・・・・・・・
時間があれば、すらすら出来る方々、、、
うーーん、、、、・・・・・

・・・・・・

y sakuda

了解です。後刻整理して、1案、2案の両方を投稿します。(10時くらいになるかな?)

くまぷー

>10時くらいになるかな

(`◇´)ゞアイアイサー!

くまぷー

まだかな?

y sakuda

遅くなりました。
第2案も一緒に出そうと思っていたのですが、146のはちゃんと動いているのですが、あまりにもダサイので、ダイエットして128にしたら、2の時気が狂っちゃいました。
分かったつもりで、修正したら、こんどは1000の時がダメw
ということで、第2案の方は後回しにして、第一案だけ提示します。

103文字
{=SUM((ROW(2:999) 1 Then
For K = 2 To wMin
If pX Mod K + pY Mod K = 0 Then
wYaku = K
Exit For
End If
Next
End If
Yakusu = wYaku
End Function
Function Fai(ByVal pI As Long) As Long
Dim J As Long, wCnt As Long
For J = 2 To pI - 1
If Yakusu(pI, J) = 1 Then
wCnt = wCnt + 1
End If
Next
Fai = wCnt + 1
End Function
Sub Check()
Dim I As Long, wF As Long
With ActiveSheet
For I = 2 To 1000
.Range("c4") = I
wF = Fai(I)
If wF <> ActiveCell Then
MsgBox "Error" & I & ":" & wF
Exit For
End If
Next
End With
End Sub

くまぷー

・・・で、解答例はどこですか?

y sakuda

あっ、すみません。例によって不等号でマクロとごっちゃになってる^^;

再掲
103文字
{=SUM((ROW(2:999)<C4)*(MMULT(N(MOD(ROW(2:999),TRANSPOSE(ROW(2:499)))=0),N(MOD(C4,ROW(2:499))=0))=0),1)}

マクロも再掲します。
Function Yakusu(pX As Long, pY As Long) As Long
Dim wMin As Long, wYaku As Long
wMin = WorksheetFunction.Min(pX, pY)
wYaku = 1
If wMin > 1 Then
For K = 2 To wMin
If pX Mod K + pY Mod K = 0 Then
wYaku = K
Exit For
End If
Next
End If
Yakusu = wYaku
End Function
Function Fai(ByVal pI As Long) As Long
Dim J As Long, wCnt As Long
For J = 2 To pI - 1
If Yakusu(pI, J) = 1 Then
wCnt = wCnt + 1
End If
Next
Fai = wCnt + 1
End Function
Sub Check()
Dim I As Long, wF As Long
With ActiveSheet
For I = 2 To 1000
.Range("c4") = I
wF = Fai(I)
If wF <> ActiveCell Then
MsgBox "Error" & I & ":" & wF
Exit For
End If
Next
End With
End Sub

y sakuda

やっとチェックOKになりました^^

第2案の132です。
{=SUM(--(MMULT(N(MOD(ROW(2:999)*(ROW(2:999)<C4),TRANSPOSE(IF(MOD(C4,ROW(2:1000)),9^4,ROW(2:1000))))>0),N(ROW(2:1000)<=C4))=C4-1),1)}

こちらはC4の約数を先に計算し、その約数のいずれでも割り切れない、2~n-1の数を数えています。
自分で作って置いてなんですが、頭がこんがらがる代物w
第1案も第2案もExcel2007ならColumnを使用してTransposeを外せますので、10文字前後減るはずですが、やってません。

くまぷー

いや~、本当になんでもできちゃうんですね~
普通、これだけの行数を要するマクロをワンセルに
納めるなんて信じられません。
参りましたm(__)m

くまぷー

早く、supermabさん、ジョー3さん、minさんのコメントが見たいものです。

y sakuda

>いや~、本当になんでもできちゃうんですね~

私もどなたかが作ったのを見せられたら、えーー?っと思いそうですが、実はこれ案外素直にできちゃいました。

supermab

おおお~!
出てますね。

あとで、解析します。

jyo-3

sakuda さんーーー
すごいですねーーー
全問に挑戦!!

わたしは、、気が向いたのにだけ挑戦・・・

・・・・・
数学力がすごいのね・・・・・
高校生に教えたりだもんね――ー
・・・・・・
わたしは、小6ぐらいでストップかも、、、

y sakuda

しかし・・・・
他の方の回答見られないってのはつまんない^^;

む印

こんばんはぁ~
何やらすごい問題が出題されてたんですね~
しかし、y sakudaさんはまたあっさりと・・・
その頭脳がうらやましいです、、、

私も先ほどちょっと挑戦はしてみましたが
ワンセルでの解答は全く思いつきませんでした。

循環参照ならGCDが活躍してくれるのですが
配列には対応してくれない・・・(ジレンマ)

y sakuda

>GCDが活躍してくれるのですが
私も最初これであっさり・・・と思いました^^;

くまぷー

お~、む印さんだ。
きっと何かやってくれるに違いない!

ジョー3

>GCDが活躍してくれるのですが
配列には対応してくれない・・・(ジレンマ)


ふふふ、、、、
おれが、、悪いと思ったが、、、


>配列には対応してくれない・
そかそか、、、、そういうことで、
あきらめたわたしも、、
許してもらえるかもね――ー

y sakuda

む印さん、supermabさん、今からでも何か面白いものを考えてくださいませ^^
なんともかんともさびしいw

JYO-3

>なんともかんともさびしいw
ん、、、
おめーーー、、げんきだのーーー
・・・・・・・
、、、、、、

・・・・・・むむ・・・・・・

kir

あってるかな?
63:{=COUNT(FIND("/"&E3,TEXT(ROW(INDIRECT("1:"&E3))/E3,"0/????")))}

ジョー3

>あってるかな?
ほぅほーーー

y sakuda

>あってるかな?
合ってます^^
それにしても、63とは凄いですねーーー
それに、私のなんかに比べると、式が単純なだけに無茶苦茶早いです。
それにしても、分数を使って、約分できていないのを探すなんてアイデアには参りました。
やっぱりいろいろやり方がありますねーー

くまぷー

sakudaさんとkirさんにやって頂いたので
「関数で出来ますか~?」の第52問目と
させて頂きました。

ありがとうございます。

でも、本当になんでもできちゃうんですね~

y sakuda

あはっ、いつの間にかタイトル変わってるw

くまぷー

>あはっ、いつの間にかタイトル変わってるw


でへへへ (^^ゞ

supermab

>でも、本当になんでもできちゃうんですね~

いやはや。

もはや、呆れる領域w

kir

>合ってます^^
よかった~♪
>互いに素とは、1以外の公約数がない数字のペアと思ってよろしいかと思います。
このヒントがないと最後まで解けなかったと思う。

ちなみに、マクロはGCD使えないんでしょうか?

JYO3

>もはや、呆れる領域w

おおーーー
supermab さん、、出した甲斐があったね――
よかったよかった。

む印

うわー、kirさんスッゴイ、、、、

TEXT(数値,"0/????")で約数が判断出来るんですねぇ~
また又・・・勉強になりました!

む印

うむむ、、まてよ、、、
・・・ということは、
{=COUNT(FIND("/"&C4,TEXT(ROW(1:1000)/C4,"[<1]0/????")))}
とすると、56文字にできたぁ~

む印

>ROW(1:1000)
www、よく考えたら、、
ROW(1:999)でよかったですよねぇ^^;

y sakuda

>このヒントがないと最後まで解けなかったと思う。
確かにkirさんのを見せられると大変なヒントになってますねーー
問題は、自分のヒントには全くなってないことwww

>ちなみに、マクロはGCD使えないんでしょうか?
2007は調べてないですが、ないはずです。
VBAでは普通にできる計算は自分でやれということになってるんでしょう^^


jyo3

おおーーー
発展してますね――ー

出題者が、出来ないのも、・・・・・
すごいのねぇーーー

y sakuda

>出題者が、出来ないのも、・・・・・
supermabさん、他にこれはできないだろうってのありませんか?
出題者できなくても問題にしちゃうってのも一つの手段かも^^

jyo3

>出題者できなくても問題にしちゃうってのも一つの手段かも^^

1)それを、、絶対出来ないって、言い切ることもすごいし
2)思いがけない手法で、出来ちゃうってのもすごいし、、、

ありうる、ありうる。
1)と、2)の中間的な、、

3)作業セル1個だけ使えるなら!!!

とか、、、

jyo-3

>supermabさん、・・・・ありませんか?
出題していいですか?
くまぷーさん!!

くまぷー

>出題していいですか?

いいとも~!!

jyo3

送りました。

y sakuda

おお、まだ、続きそう^^

min

54{=COUNT(FIND("/"&C4,TEXT(1-ROW(1:999)/C4,"0/????;")))}

でもいいもかな??

y sakuda

minmaxさんの54チェックしました。
OKです。
何度見ても、kirさんのアイデア秀逸^^

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年8 月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

TOP メニュー