这些问题似乎主要包含两个部分:第一,找出如何处理问题,采取什么步骤,需要什么功能,什么变量,计数器等等,第二,优化系统到能够处理巨大的数字。
似乎我只是有一个更快的功能,比如找到素数,我就可以将它插入我当前的“解决方案”中并回过头来回答大概二十个或更多我不得不跳过的问题,因为我的“解决方案”需要一个不合理的时间来得到答案(但它会得到答案)。事实上,我试图从头开始提出一切(我确信我理解它是如何工作的),我确信我的公式是次优的。
第二个优化部分是整个挑战吗?我还应该自豪吗?查找一些选择素数和分解函数,然后将它们复制粘贴到我当前太慢的解决方案中,是否会作弊?
答案 0 :(得分:3)
如果你认为这是作弊,那只会作弊。我不。事实上,我开始研究素数和整数分解,就像你现在一样。
顺便说一句,这是一个简单的函数,可以找到小于 n 的素数;该算法是由Cyrene的Eratosthenes在两千多年前发明的:
function primes(n)
sieve := makeArray(2..n, True)
for p from 2 to n
if sieve[p]
output p
for i from p*p to n step p
sieve[i] := False
这是一个使用试验部门找到数字 n 因子的简单函数:
function factors(n)
f := 2
while f*f <= n
while n % f == 0
output f
n := n / f
f := f + 1
if n <> 1 output f
有很多方法可以改善这两种功能。如果您对使用素数编程感兴趣,我在我的博客上谦虚地推荐这个essay。