質問: 与えられたn以下で、異なる2つの自然数の組で、自分自身を除いた約数の和が、互いに等しくなるなるような数の組を例えば以下のように表示したいのですが、実行結果に何も出てきません。 **期待する実行結果:** ``` $./a.out 自然数nを入力してください:5000 (220,284)→*220を除く約数の和は284で、逆に284を除く約数の和は220である* (1184,1210) (2620,2924) ``` **現状の実行結果:** ``` $ ./a.out 整数 n を入力してください:5000 ``` 作成したプログラムで、関数 `sum` は自然数aを除く約数の和は出力されていたため特にコンパイルを実行したとき問題なかったのですが(もちろん sum 関数確認時の main 関数は上記とは違います)、関数 `yuai` の作成方法が思いつきません。 n以下の自然数で、自然数自身を除く約数の和とその自然数が等しくなるような自然数が存在するとき、その2つの数字はペアで出力されるプログラムを作成すべきだと考え、i 自身を除いた約数の和と ans, また ans 自身を除いた約数の和と i が等しかったとき出力されるべく ``` for(i=1;i /* a の自身を除く約数の和を計算する関数 */ int sum(int a) { int i, su; su=0; for(i=1; i
回答: まずはデバッガの使い方を覚えましょう。そうすると質問→応答を待っている間に誤りがわかります。 ヒント1: 開始時点での `sum` の値っていくつですか? ヒント2: ループ内で `sum` の値は変わりますか? 某超大型掲示板サイトだと答えをすぐ見ないようスクロール領域が入るところ。 回答:最初 `sum` の値は `0` です。そして一度も更新されていません。更に、約数の和は決して `0` にならないので、最初の `sum(i)==ans` が成立することは絶対にありません(つまり結果なし) 修正結果が欲しいですか? とりあえずまずは自分で修正してみましょう。他人に頼りすぎると実力つかないです。