Python 项目7。10001素数

Python 项目7。10001素数,python,Python,通过列出前六个素数:2、3、5、7、11和13,我们可以看到第六个素数是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,我

通过列出前六个素数:2、3、5、7、11和13,我们可以看到第六个素数是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,这是错误的。

试试这个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;
                    }
                }
            }
        }
    }
}
回答问题11


可能是因为复合数可以有除2和3之外的其他因素?简而言之,测试驱动开发:对于您的调试考虑,最小的失败案例是k=10,应该是29,但您说是25,这不是素数。同样地,35、49和55也算作素数,即使它们是5*7、7*7和5*11。为自己省去一些麻烦,编写一个isPrimen函数,您可以在各种素数和非素数上独立测试,这样您就不必同时调试一万次迭代。您必须使用Eratosthenes筛或类似工具欢迎使用!这可能有效,但不能解释为什么有效。你能补充一些解释来帮助网站的其他用户来这里吗?
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()