我找因數的方法是從1~sqrt(n)通通都試過一遍,可以整除n的話,再找其對應的另一個因數,因為因數通常都是成對的嘛,除了完全平方數,那互為好友數的數對中有沒有可能其中一數是完全平方數?(我沒有判斷n是否為完全平方數就上傳了,AC)
程式碼:
#include <iostream>
#include <cmath>
using namespace std;
int main(){
int n, m, tn; //tn為m的真因數總和
while (cin >> n, n){
m = 1;
for (int i=2; i<=int(sqrt((double)n)); i++)
if (n%i == 0)
m += i + n/i; //此數若為完全平方數,那麼就不能這樣算了,但用NPSC給的測資來測試就AC了。互為好友數的數對中有沒有可能其中一數是完全平方數?
if (m == n)
cout << "=" << n << endl;
else{
tn = 1;
for (int i=2; i<=int(sqrt((double)m)); i++)
if (m%i == 0)
tn += i + m/i;
if (tn == n)
cout << m << endl;
else
cout << 0 << endl;
}
}
}
应该是没有的... 不然代码是有瑕疵的