條件:項目歐拉#21
設d(n)的被定義爲n的適當的除數的總和(數字小於n其中均勻地劃分成n)。如果d(a)= b且d(b)= a,其中a≠b,則a和b是友好的對,並且a和b中的每一個被稱爲友好的數字。
例如,220的適當除數是1,2,4,5,10,11,20,22,44,55和110;因此d(220)= 284. 284的適當除數是1,2,4,71和142;所以d(284)= 220
評估下10000
所有的親情號碼的總和我做了以下內容:
static void Main()
{
long sum = 0;
List<int> passedValues = new List<int>();
for (int i = 1; i < 10000; i++)
{
var number1 = SumOfNumber(i);
var number2 = SumOfNumber(SumOfNumber(i));
if (number2 == i && !passedValues.Contains(number1))
{
sum = sum + number1;
passedValues.Add(number1);
passedValues.Add(number2);
}
}
Console.WriteLine(sum);
Console.ReadKey();
}
private static int SumOfNumber(int input)
{
int sum = 0;
for (int i = 1; i <= input/2; i++)
{
if (input%i == 0)
{
sum += i;
}
}
return sum;
}
但是它給造成40284,而正確答案似乎是31626爲什麼我的程序無法正常工作?我是否多次添加東西?我也嘗試添加列表存儲傳遞的值,但它最終給結果25008:
static void Main()
{
long sum = 0;
List<int> passed = new List<int>();
for (int i = 1; i < 10000; i++)
{
var number1 = SumOfNumber(i);
var number2 = SumOfNumber(SumOfNumber(i));
if (number2 == i && !passed.Contains(i))
{
sum = sum + number1;
passed.Add(number1);
}
}
Console.WriteLine(sum);
Console.ReadKey();
}
http://www.mathblog.dk/project-euler-21-sum-of-amicable-pairs/ –
如果我想複製粘貼一些代碼,我不打算在這裏發佈求助 – KOPEUE
好吧, ,你的代碼只是沒有解決問題。通過它,你會發現爲什麼。你應該找到少於10個f10按鍵的罪魁禍首。 – SimpleVar