1 条题解

  • 0
    @ 2025-8-24 23:13:03

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar GSQ0829
    坐标:福建泉州 | 小升初蒟蒻 | /team/95847 加团 | 欢迎参加 /contest/250344 | MBTI:INFP | 支持壶关,忘关私信

    搬运于2025-08-24 23:13:03,当前版本为作者最后更新于2025-04-12 19:52:57,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    前置知识:质数

    什么是质数?

    质数就是在大于一的自然数中,除了一和该数自身外,无法被其他自然数整除的数就称为质数。

    比如 22557979103103 等等。


    解题思路:

    入门题。

    因为,题目只让我们找到第 20252025 个质数。显然这个数不会太大,只需要用暴力枚举的方法就可以了。

    首先,我们要写出一个判断是否是质数的函数。

    bool isPrime(int x) {
    	if (x < 2) return 0;
    	for (int i = 2; i * i <= x; i++) {
    		if (x % i == 0) return 0;
    	}
    	return 1;
    }
    

    然后,我们需要一个计数器,来统计当前到了第几个质数。只要当前这个数字是质数,计数器就加一。再判断如果计数器达到了 20252025,也就是已经找到了第 20252025 个质数,就输出当前这个数字。

    for (int i = 2;; i++) {
        if (isPrime(i)) ans++;
        if (ans == 2025) {
            cout << i;
            return 0;
        }
    }
    

    最后算出来答案为 1760917609


    代码:

    这里给出两个代码。

    第一种,是详细的解法。

    #include <bits/stdc++.h>
    using namespace std;
    
    bool isPrime(int x) {
    	if (x < 2) return 0;
    	for (int i = 2; i * i <= x; i++) {
    		if (x % i == 0) return 0;
    	}
    	return 1;
    }
    
    int ans;
    
    int main() {
    	for (int i = 2;; i++) {
    		if (isPrime(i)) ans++;
    		if (ans == 2025) {
    			cout << i;
    			return 0;
    		}
    	}
    	return 0;
    }
    

    第二种,是直接输出答案。

    #include <bits/stdc++.h>
    using namespace std;
    
    int main() {
    	cout << 17609;
    	return 0;
    }
    
    • 1

    信息

    ID
    11994
    时间
    1000ms
    内存
    512MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者