int n;
int sum;
cout << "write a number";
cin >> n;
for (int i = 1; i < n; i )
{
sum = 0;
for (int j = 1; j <= i; j )
{
if (i % j == 0)
sum = sum j;
}
if (sum == i)
cout << i<<endl;
}
為什么我總是得到 1,結果,當我更改第二個 for 回圈并使其 i/2 時,我無法理解它的邏輯我得到了正確的結果,但我無法理解它是如何作業的。
輸入 1000 預期結果 =6 28 496
uj5u.com熱心網友回復:
提醒一下數學。參考維基
在數論中,完美數是一個正整數,等于其正因數之和,不包括數字本身。
因此,在您的代碼中,您將 i 的所有除數的總和包括在內。這就是為什么你只得到 result 1。
你應該簡單地改變它。
for (int j = 1; j < i; j )
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530782.html
標籤:C
下一篇:如何忽略用戶輸入錯誤的迭代?
