[英]Project Euler Exercise 30
我正在努力解决项目欧拉的第30个问题。
我对这个问题的实施产生了4次幂的良好结果,但是5号电源的答案不被网站接受。
有人能解释我的代码中有什么问题吗?
另外,我不确定我的检查上限的公式是否正常。 如果不是,我很高兴知道好的解决方案。
这是我的代码:
class P30
{
static void Main(string[] args)
{
Console.WriteLine(" " + GetMatchingNumbers(4).Sum());
Console.WriteLine(" " + GetMatchingNumbers(5).Sum());
Console.ReadLine();
}
static IEnumerable<int> GetMatchingNumbers(int power)
{
for (int i = 2; i <(power + 1)*(Math.Pow(9,power)); i++)
{
var sumOfPowers = 0;
var tempi = i;
for (int x = 0; x < power; x++)
{
sumOfPowers += (int)Math.Pow( tempi % 10, power);
tempi /= 10;
}
if (sumOfPowers == i)
{
yield return i;
Console.WriteLine("With Power {0}, {1} matches", power, i);
}
}
}
}
[编辑]我问过我的理论是否准确。
您的代码仅汇总了它正在检查的数字的前5位数。
代替
for (int x = 0; x < power; x++)
你应该使用while循环
while (tempi > 0)
这会产生您需要的缺失数字。 (暗示它长6位数。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.