【发布时间】:2018-09-11 06:02:11
【问题描述】:
当我运行我的程序时,我发现我初始化了一个整数列表并且它冻结了。我知道这是因为 Console.WriteLine();列表初始化后的方法不会出现在控制台上。当我运行它时,唯一的输出是“列表之前”。我错过了什么?我真的希望这不是显而易见和令人尴尬的。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Euler._1_50
{
class Challenge3
{
public Challenge3()
{
Console.WriteLine("before list");
long num = 600_851_475_143;
long high = 0;
long length = 0;
List<int> factr = new List<int>();
Console.WriteLine(IsPrime(num));
Console.WriteLine("after list");
for (long i = 2; i <= num / 2; i++)
{
if (IsPrime(i) && num / i == 0)
{
num = num / i;
factr.Add((int)i);
length++;
}
}
for (long i = 0; i <= length; i++)
{
if (i > high) high = i;
}
Console.WriteLine(high);
}
private bool IsPrime(long i)
{
bool isPrime = false;
for (long j = 2; j <= i/2; j++)
{
if (i % j == 0) isPrime = false;
else isPrime = true;
}
return isPrime;
}
}
}
【问题讨论】:
-
运行 3000 亿次迭代需要时间。尝试在 (j % 1000) == 0 时在 IsPrime 中添加 Console.Writeline。
-
你知道,这很有意义。不用说我是编程新手。
-
尝试计算 终极问题 的答案是 42...需要很长时间的人。
标签: c# list integer initialization factors