条件:项目欧拉#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