- 締切済み
mathematicaのプログラムなんですが
1~1000の中にある友愛数を全て表示したい場合 どのようなプログラムを組むとよいのでしょうか?友愛数については C言語しかわからないのにできたら教えていただきたいです。よろしくお願いします
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 330k
- ベストアンサー率100% (6/6)
どのようなものを求めているのかよく分かりませんので,すこし補足要求を. 1.「C言語しかわからない」というのは,「C言語なら友愛数を表示するプログラムが書ける」と「扱える言語がC言語というだけで,C言語でも友愛数を表示するプログラムは書けない」のどちらでしょうか. 2.「ループの仕方がいまいちわからない」というのは,「Mathematicaでループの記法がそもそも分からないだけで,ループの中身のプログラム(ある整数が友愛数であるかどうかを判定するプログラム)は書ける」と「ループの中身のプログラムも書けない」のどちらでしょうか. ちなみに,ループを使わないで整数のリストに関数を作用させていく方法がMathematica的に「よい」プログラムになるでしょう.1行で書けます.
- sgwjn
- ベストアンサー率70% (47/67)
友愛数が何組あるかは未解決な問題です。 友愛数を求めることのできる完全な関係式は、今のところありません。 ですが、1~1000程度の範囲であれば、220&284のみと解明されていたはずです。 ですので、使用する言語にかかわらず画面に220&284を表示するだけのプログラムになります。 答が既知であるのに、全ての数の約数を求めて総当りで探すような方法を選択するのは馬鹿馬鹿しいことです。 最後に、質問をする前に少しくらいはご自分で調べるべきだと思います。 ■友愛数 - Wikipedia http://ja.wikipedia.org/wiki/%E5%8F%8B%E6%84%9B%E6%95%B0
補足
回答ありがとうごいます。しかしながら事前に調べる事はしましたし、友愛数が1000内に220&284しかないのは理解しています。ただ 範囲を広げてもできるようなプログラムを作るために ループの仕方がいまいちわからないので ここに質問記載させていただきましたm(__)m 下手な 日本語ですいません;;
補足
解答ありがとうございます。 やっと解決しました^-^y質問した身なのでどうせならプログラム載せておきます。最後の1000を変えれば 1~その数値内の友愛数を発見できます。 Do[If[(yakuwa[yakuwa[k]]==k)&&(yakuwa[k]!=k), Print[{k,yakuwa [k]}]],{k,1,1000]; Printを新たな If文(k<yakuwa[k]の条件)でくくると 表示方法を(小、大)にできます。一度お試しあれw