2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数

Posted Alex_996

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数相关的知识,希望对你有一定的参考价值。

Ideas

本来一开始想到的是质数筛,但是埃式筛是用来筛选 n 以内的所有质数,并不能找到第 n 个质数,除非找到一个足够大的 n 能够把第 2019 个质数包含进去。

可能质数筛还有升级,能够用来找到第 n 个质数,挖个坑,后面研究一下。

所以这题就用来最原始的方法:通过一个函数 is_primer() 来判断一个数是不是质数,逻辑就是从2开始检查,一直到根号n为止,如果发现n的约数,那么就说明n不是质数。

Code

Python

def is_primer(n):
	for i in range(2, int((n ** 0.5) + 1)):
		if n % i == 0:
			return False
	return True


if __name__ == '__main__':
	num = 2
	primer_num = list()
	while len(primer_num) < 2019:
		if is_primer(num):
			primer_num.append(num)
		num += 1
	print(primer_num[-1])

以上是关于2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - D. 质数的主要内容,如果未能解决你的问题,请参考以下文章

2019年第十届蓝桥杯 - 省赛 - C/C++大学C组 - F. 旋转

2019年第十届C/C++ A组蓝桥杯省赛第四题:迷宫

2019年第十届C/C++ A组蓝桥杯省赛第四题:迷宫

2019年第十届蓝桥杯 - 省赛 - C/C++大学A组 - G. 日期问题

2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - C. 数列求值

2019年第十届蓝桥杯 - 省赛 - C/C++大学B组 - I. 后缀表达式