题目:

第n小的质数

题目解析

看注释

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

int main() {
	ll n;
	cin >> n;
	n--; //减少判断双数的时间
	for (ll i = 3;; i += 2) { //只测试单数减少判断次数
		//死循环从2开始试数,注:如果设死循环必须要可退出否则会永远都无法结束!!!
		bool jube = true;  //判断是否为素数  true是 false不是
		for (ll j = 2; j <= sqrt(i); j++) { //从2开始一直到i的开方如果没有数能被他整除就是素数。
			//这里最好写开方如果用 j * j <= i 的话如果j过大会导致爆栈
			//这里直接使用 j <= i 的时间复杂度时O(n) 开方是 O(sqrt(n)) 
			if (i % j == 0) {
				jube = false; //当前i能被j整除时 便不是素数 修改判断值 jube = false 提前结束内层循环
				break;
			}
		}
		if (jube) { //如果jube判断为真则为素数
			n--; //减少一
			if (n == 0) { //当n减一后 = 0 说明i已经是第n小的素数了
				cout << i << endl;  //输出当前i
				break; //退出死循环
			}
		}
	}
	return 0;
}

整活

#define header_file <bits/stdc++.h>
#include header_file
#define macro_definition typedef
#define semicolon ;
#define inaugurate using
#define newq namespace
#define memory_space std
#define long_definition long
#define definition int
#define main_functions main
#define opening_parenthesis (
#define closing_parenthesis )
#define left_brace {
#define closing_brace }
#define input cin
#define left_corner_number <<
#define right_corner_number >>
#define circulate for
#define equal_sign =
#define plus +
#define boolean bool
#define real true
#define greater_than1 <
#define less_than >
#define less_than_or_equal_to <=
#define greater_than_or_equal_to >=
#define evolution sqrt
#define judgment if
#define take_the_balance %
#define is_equal_to ==
#define fake false
#define quit break
#define output cout
#define line_breaks endl
#define self_reduction --
#define back return
#define variable1 ll
#define variable2 i
#define variable3 j
#define add_yourself ++
#define variable4 jube
#define variable5 n
#define num1 0
#define num2 2
#define num3 3

inaugurate newq memory_space semicolon
macro_definition long_definition long_definition variable1 semicolon
definition main_functions opening_parenthesis closing_parenthesis left_brace
variable1 variable5 semicolon
input right_corner_number variable5 semicolon
variable5 self_reduction semicolon
circulate opening_parenthesis variable1 variable2 equal_sign num3 semicolon semicolon variable2 equal_sign num2 plus variable2 closing_parenthesis left_brace
boolean variable4 equal_sign real semicolon
circulate opening_parenthesis variable1 variable3 equal_sign num2 semicolon variable3 less_than_or_equal_to evolution opening_parenthesis variable2 closing_parenthesis semicolon variable3 add_yourself closing_parenthesis left_brace
judgment opening_parenthesis variable2 take_the_balance variable3 is_equal_to num1 closing_parenthesis left_brace
variable4 equal_sign fake semicolon
quit semicolon
closing_brace
closing_brace
judgment opening_parenthesis variable4 closing_parenthesis left_brace
variable5 self_reduction semicolon
judgment opening_parenthesis variable5 is_equal_to num1 closing_parenthesis left_brace
output left_corner_number variable2 left_corner_number line_breaks semicolon
quit semicolon
closing_brace
closing_brace
closing_brace
back num1 semicolon
closing_brace