質問: number - 1: print("完全数ー1") else: print("どちらでもない") ``` 入力値と出力結果です 16 15 完全数ー1 9 4 どちらでもない 28 28 完全数 どちらでもない 互いに独立な事象でやったつもりだったのですがif文の設定の仕方が悪かったのでしょうか (コピペした時に全部左寄りになってしまいましたが元のコードのインデントは問題なしです)
回答: 質問のプログラムの問題は、if構文の使い方にあります。 以下のように修正すると良いです。 (修正箇所は1か所、コメントを書いている行のifをelifに変更する) ``` ``` number = ? sum = 0 for k in range(1,number): if number % k == 0: sum += k print(sum) if sum == number: print("完全数") elif sum == number - 1: #質問のプログラムでは if になっているので、完全数の場合でも"どちらでもない"が表示される。 print("完全数ー1") else: print("どちらでもない") ```