题目
我们知道第一个质数是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
暂无评论内容