【问题标题】:ProjectEuler 7. 10001st primeProject Euler 7. 10001st prime
【发布时间】:2019-06-18 23:29:07
【问题描述】:

通过列出前六个素数:2、3、5、7、11 和 13,我们可以看到第 6 个素数是 13。

第 10001 个素数是多少?


k = 10001
b = 2
for i in range(2, 100000):
    if i % 2 != 0 and i % 3 != 0:
        b += 1
        if b == k:
            print(i)

我预计输出是 104743,但实际输出是 29999。为什么?

如果 k 为 6,我得到 13 的输出,这是正确的。但如果 k 为 10001,我得到 29999,这是错误的。

【问题讨论】:

  • 也许是因为合数可以有 2 和 3 以外的因数?
  • 测试驱动开发简而言之:P
  • 出于调试考虑,最小的失败案例是k=10,它应该是 29 但你说的是 25(这不是质数)。您同样将 35、49 和 55 视为质数,即使它们是 5*7、7*7 和 5*11。省去一些麻烦,写一个 isPrime(n) 函数,你可以在各种素数和非素数上独立测试,这样你就不必同时调试一万次迭代。
  • 你必须使用埃拉托色尼筛或类似物

标签: python


【解决方案1】:

回答python ProjectEuler问题11

def main():
    number_prime_to_find = 10001
    x = 2
    list_of_primes = []
    while(len(list_of_primes) < number_prime_to_find):
        if all(x % prime for prime in list_of_primes):
            list_of_primes.append(x)
        x += 1
    print('The answer is :' , list_of_primes[-1])
main()

【讨论】:

  • 欢迎来到 SO!这可能有效,但不能解释 为什么 它有效。您能否添加一些解释以帮助该网站的其他用户来到这里?
【解决方案2】:

试试这个java代码

import java.util.*;

public class Solution {

    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int[] arr = new int[10000000];
        for(int i=2;i<10000000;i++)
        {
            arr[i]=i;
        }
        for(int i=2;i<10000000;i++)
            for(int j=i+i;j<10000000;j+=i)
                arr[j]=0;

        int t = in.nextInt();
        for(int a0 = 0; a0 < t; a0++){
            int n = in.nextInt();
            int count=0;
            for(int j=2;j<10000000;j++)
            {
                if(arr[j]!=0)
                {
                    count++;
                    if(count==n)
                    {
                        System.out.println(j);
                        break;
                    }
                }
            }
        }
    }
}

see this

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2011-02-15
    • 2015-01-23
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多