使用Python求第2019个质数是什么?

题目

我们知道第一个质数是2、第二个质数是3、第三个质数是5……

请你计算第2019个质数是多少?

代码实践

以下是本人的代码实践,赋上了AI的注释(我的评价是新手,菜菜菜嗷):

import math
# 定义函数
x = int(input("请输入一个正整数:"))
# 定义计数变量
count = 2
# 遍历2到2019*2019
for i in range(2,2019*2019):
    # 遍历2到i的平方根
    for j in range(2,int(math.sqrt(i))+1):
        # 如果i可以被j整除,则跳出循环
        if i % j ==0:
            break 
        # 如果i可以被j整除,但j不是i的平方根,则计数变量加1
        elif i % j != 0 and (j==int(math.sqrt(i)) or j==int(math.sqrt(i)+1)):
            count+=1
    # 如果计数变量等于x,则输出i为第x个质数
    if count == x:
        print('第%d个质数是:%d'%(x,i))
        break

以下是通义千问的代码(其实是错误的代码,哈哈哈,运行结果有问题嗷):

import math

def is_prime(num):
    if num <= 1:
        return False
    if num == 2:
        return True
    if num % 2 == 0:
        return False
    
    # Check for factors up to sqrt(n)
    sqrt_num = int(math.sqrt(num))
    
    for i in range(3, sqrt_num + 1, 2):
        if num % i == 0:
            return False
    
    return True

for num in range(1, 2020):
    if is_prime(num):
        print(f"The {num}th prime number is {num}.")
        
print("The 2019th prime number is", end="")
for num in range(1, 2020):
    if is_prime(num):
        count += 1
    if count == 2019:
        print(num, end="")

一眼看过去,虽说代码行数多,但是水平很高,可能有些许不影响运行的错误,但是确实厉害。

同时也试了试其它几个国产的大模型,代码的运行结果都是错的……

再看看中科院自动化所的紫东太初(水平很高,太牛了!!!):

def is_prime(n):
    if n < 2:
        return False
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            return False
    return True
primes = []
n = 2
while len(primes) < 2019:
    if is_prime(n):
        primes.append(n)
        n += 1
    else:
        n += 1
print(f"第2019个质数是:{primes[-1]}")

答案

第2019个质数是:17569

© 版权声明
THE END
喜欢就点赞支持一下吧,如果觉得不错或日后有所需要,可以收藏文章和关注作者哦。
点赞2
评论 抢沙发

请登录后发表评论

    暂无评论内容