12/05/10 13:32:05.40
簡単なことなら誰かが答えてくれる
難しいことはスルーされる
718:715
12/05/10 14:27:58.12
class Kanzen
{
public static void main(String args[])
{ int n;
for(n=2; n<1000; n++)
if (Test(n)) ・・・①
System.out.println("完全数 : " + n);
}
static boolean Test(int n)・・・②
{ int i,k;
for(k=0,i=n/2; i>0; i--)
if (n%i==0) k+= i;
if (n==k) return true;・・・③
return false; ・・・④
//else return false;
}
}
プログラム超初心者です。
2~1000までの完全数を計算するプログラムで
計算内容は理解できるのですが、プログラムの構造と流れが理解できません。
①~④がどういった役割をするのかと処理の流れを教えてください。
719:デフォルトの名無しさん
12/05/10 14:39:31.93
関数とかメソッドでググれ
どうでもいいけどC脳すぎるだろあんまり当てにしないほうがいいぞそれ
Cにしたってkをforの中で初期化する意味がわからん
720:デフォルトの名無しさん
12/05/10 15:02:15.09
s=0;
for(k=0; k<10; ++k) s+=k+1;
assert s==55;
最新のjdk(java7)の言語機能や提供ライブラリを使っても、1から10までの和(有限個数のsum)はこの古典的なfor loopの方法しかないのでしょうか?
721:デフォルトの名無しさん
12/05/10 15:11:52.73
小学校か中学校、
最悪でも高校では数列の和について何か習うんじゃね?
722:デフォルトの名無しさん
12/05/10 15:16:34.63
完全数ってなんだ?
723:デフォルトの名無しさん
12/05/10 15:31:56.52
公式が使えるならわざわざプログラムなんかしません。
本当は内積(級数)や加算集合、外部イテレーションの論点なんですけど簡単に書きすぎたので逆に何の分からないですね。
本当はfuncの定義は任意で、例えば簡単にx+1とすると1..10の和と同等ですが。
func=(int x)->x+1;
s=0;
for (k=0; k<10; ++k) s+=func(k);
assert s==55;
最新のjdk(java7)の言語機能や提供ライブラリを使っても、1から10までの和(有限個数のsum)はこの古典的なfor loopの方法しかないのでしょうか?
724:デフォルトの名無しさん
12/05/10 15:36:32.97
>自然数nの約数の和S(n)が2nとなるとき、nは完全数であるといわれる。たとえば、6や28は完全数である。なぜなら
>
> 2・6=1+2+3+6
>
> 2・28=1+2+4+7+14+28
>
>だからである。S(n)が2nより大きいときは過剰数、S(n)がnより小さいときは不足数とよばれる。
725:デフォルトの名無しさん
12/05/10 15:38:22.12
>>723
"珠玉のプログラミング"と言う本の最初のエピソードを読め。
726:デフォルトの名無しさん
12/05/10 15:47:30.17
Programming Pearls, Second Edition by Jon Bentley.
Addison-Wesley, Inc., 2000.
[new] What's new on this web site?
From The Book
Table of Contents
Preface
Part I: Preliminaries
Column 1: Cracking the Oyster
Column 2: Aha! Algorithms [Sketch]
Column 4: Writing Correct Programs [Sketch]
Column 5: A Small Matter of Programming [Sketch]
Part II: Performance
Column 7: The Back of the Envelope
Column 8: Algorithm Design Techniques [Sketch]
Part III: The Product
Column 14: Heaps [Sketch]
Column 15: Strings of Pearls
Epilog to the First Edition
Epilog to the Second Edition
Appendix 2: An Estimation Quiz
Appendix 3: Cost Models for Time and Space
Appendix 4: Rules for Code Tuning
Solutions for Column 1 Column 5 Column 7 Column 15
Index
727:デフォルトの名無しさん
12/05/10 18:54:37.05
日本でアルゴの第一人者(著名人)の一人言えば奥村先生だから、奥村先生あたりがこういうたぐいのムック本やアルゴ・チップス記事や連載コラムを執筆してくると、日本語のままで安心して知識を吸収できるんだけどな。
読者が現場やプロレベルだと、新聞・雑誌コラム感覚で書いてみても数学の月刊誌とちがってわざわざ毎月お金だしてまで情報を得ようと思わないから、広告付きブログとか、書籍・ムック本しかないんじゃないかな。
著名カリスマな「フォトショップ達人が伝授する○○」のテクニック本みたいなのとおなじ。
それよりも、奥村先生のJavaによるアルゴは本がボロボロになるほど読んだので、次というか続編はJavaによるパラレルアルゴの現代的計算方法とトポロジーやグラフ・多重化など比較的新しいデータ紹介や海外論文手法(辞典)をそろそろ読んでみたいなあなんて思います。
728:デフォルトの名無しさん
12/05/10 19:22:37.61
>>722
奥村先生。2chで宣伝してないで仕事してください
729:デフォルトの名無しさん
12/05/10 22:30:19.97
>>712
他人のパッケージに追加って話じゃなくて、
俺のシールしてないパッケージは拡張していいよって
自分で拡張許可を示すのに使えるって言ってるの
>>714
赤の他人じゃなくて、社内とか自分一人とかの範囲の話。
配布するとき、自分が持ってるライブラリをフルセットで
配布する理由じゃなく、必要な分だけ小分けして配布するじゃん。
その時、jar毎にパッケージが閉じてたら、同じパッケージにあるべき
クラスやインターフェースを別のパッケージに置かなきゃいけないでしょ。
例えば、Model用のパッケージを用意するとして、
com.example.x.model、com.example.y.modelとjar毎に分けるより
Modelは全部com.example.modelの下に配置した方が
パッケージスコープも生かせるし便利でしょ。
730:デフォルトの名無しさん
12/05/10 22:50:31.23
>>718
わかりづらいのは括弧を使わない書き方だからなのかと思って、冗長かもしれないけど中括弧と適宜追加した。
計算内容は理解できるってことだからコメントもいらなさそうだけど書いといた。
入門編がクリア出来ればいつの間にかサクサクできるようになってるさ。
URLリンク(ideone.com)
731:デフォルトの名無しさん
12/05/11 00:02:48.36
>>730
質問者ではないのですがhttp://ideone.com/9O3pdを見させてもらいました。
なるほどと思いました。
初心者にも優しい方がいて嬉しいです。
732:デフォルトの名無しさん
12/05/11 00:24:10.34
>>730
マイクロソフトでびんぐれば誰でも六十秒以内に答えにたどりつけるので、あなた自身がコーディングやアップロードなどそういうどうでもいいことに六十秒以上の時間を掛けることは親切というよりもむしろ余計なお世話だと思いますよ。
733:デフォルトの名無しさん
12/05/11 12:22:11.36
2chコピペブログ管理人が集まるスレ26
スレリンク(blog板)
734:デフォルトの名無しさん
12/05/11 13:55:58.00
PatternとMatcherの動作についてわからないことがあるので質問させてください
public static void main(String[] args) {
Pattern pattern = Pattern.compile("^・");
Matcher matcher;
matcher = pattern.matcher("・あ");
boolean m = matcher.matches();
System.out.println(m);
}
これでfalseが出力されるのは何故なんでしょうか?
735:デフォルトの名無しさん
12/05/11 13:58:00.22
自己解決しました
736:デフォルトの名無しさん
12/05/11 13:59:27.58
素直に思いやりの心を尊しと思う
737:デフォルトの名無しさん
12/05/11 14:43:58.53
素直に馬鹿だと思う