入力数が完全数の場合は「はい」を出力し、完全数でない場合は「いいえ」を出力するコードを作成しました。しかし、6を入力すると、「いいえ」が出力されます。除数の合計が元の入力と等しい場合に、if-elseステートメントで「Yes」を出力するように指定しました。出力が間違っているのはなぜですか?
n=int(input())
myList=[]
for i in range(1,n):
if n%i==0:
myList.append(n)
sum=0
for i in range(0,len(myList)):
sum=sum+myList[i]
if sum==n:
print("Yes")
else:
print("No")
私の以前の答えに関して混乱してすみません。問題は、のn
代わりに追加していたことでしi
たmyList.append(n)
。さらに、単にsum
リストを合計するために使用できます。
数値n
をsum=sum+myList[i]
加算n
していたため、出力が間違っていました。したがって、加算すると、1、2、3を加算する代わりに、6、6、6を加算していたため、合計に3回加算していましたsum
。
n=int(input())
myList=[]
for i in range(1,n):
if n%i==0:
myList.append(i)
if sum(myList)==n:
print("Yes")
else:
print("No")
マティアスが提案したワンライナー
print(('No', 'Yes')[sum(i for i in range(1, n) if not n % i) == n])
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加