幸运数字与否

时间:2012-02-12 14:33:20

标签: java algorithm primes

  

可能重复:
  Algorithm to find Lucky Numbers

我遇到了这个问题。如果数字的总和以及数字的平方和是素数,则称这个数字是幸运的。 A和B之间的幸运数字是多少? 1< = A< = B< = 10 ^ 18。

我试过这个,     首先,我生成了1之间所有可能的素数和可以通过求和平方得到的数字(81 * 18 = 1458)。[注意:我使用了Atkin的方法进行素数生成]。
    然后验证每个数字的数字和数字平方和是否在素数列表中,如果是,则幸运,否则不是。但这非常缓慢。有没有更好的解决方法?

2 个答案:

答案 0 :(得分:2)

请在此处查看解释良好的解决方案:Algorithm to find Lucky Numbers(请注意 - 您的问题与此问题重复)。

答案 1 :(得分:0)

只需声明一个大小为1458的位数组,然后如果该nubmer为素数则将该位设置为true,否则设置为false。然后确定给定数字是否为素数只是查找数组的相应元素。

有很多关于素数计算的解释,即Eratosthenes的筛子,Atkin的筛子等。使用其中一个来初始化阵列。

请参阅http://en.wikipedia.org/wiki/Generating_primes