c++洛谷之最大质数

输入一个整数 n ,请问 n 以内(含 n 本身)最大的质数是?

输入格式
输入占一行,包含一个整数,即题目中所述的 nn

输出格式
输入占一行,包含一个整数,即 nn 以内最大的质数

输入输出样例
输入 #1
12
输出 #1
11
输入 #2
100
输出 #2
97
输入 #3
139
输出 #3
139
帮帮忙吧QWQ

__

img


#include <iostream>  

bool isPrime(int num) {
    if (num <= 1) return false;
    if (num == 2) return true;
    if (num % 2 == 0) return false;

    for (int i = 3; i * i <= num; i += 2) {
        if (num % i == 0) return false;
    }
    return true;
}

int main() {
    int n;
    std::cin >> n;

    for (int i = n; i >= 2; --i) {
        if (isPrime(i)) {
            std::cout << i << std::endl;
            break;
        }
    }

    return 0;
}

【以下回答由 GPT 生成】

求解最大质数

方案一:暴力判断

我们可以从 n 开始,依次判断每一个数字是否是质数,直到找到第一个质数为止。

具体步骤如下: 1. 判断一个数是否是质数的方法是,从 2 开始,依次判断该数是否能被 2 到 sqrt(n) 之间的数整除。如果整除,则该数不是质数;如果没有整除,则该数是质数。 2. 从 n 开始,依次判断每一个数是否是质数,直到找到第一个质数为止。

代码实现如下:

import math

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(math.sqrt(num))+1):
        if num % i == 0:
            return False
    return True

def find_largest_prime(n):
    for i in range(n, 1, -1):
        if is_prime(i):
            return i

n = int(input())
largest_prime = find_largest_prime(n)
print(largest_prime)

方案二:埃拉托斯特尼筛法

埃拉托斯特尼筛法是一种用于求解素数的经典算法。它的基本思想是从 2 开始,依次标记素数的倍数,直到标记完所有小于 n 的数。最后,未被标记的数即为质数。

具体步骤如下: 1. 创建一个大小为 n+1 的布尔数组 is_prime,用来记录每个数是否是质数。初始化时,将 is_prime 数组中所有元素都设置为 True。 2. 从 2 开始,依次标记其倍数(排除合数):如果 is_prime[i] 为 True,则将其倍数 is_prime[i+i],is_prime[i+i+i],... 等设置为 False。 3. 遍历 is_prime 数组,找到最大的质数。

代码实现如下:

def find_largest_prime(n):
    is_prime = [True] * (n+1)
    is_prime[0] = is_prime[1] = False

    p = 2
    while p * p <= n:
        if is_prime[p] == True:
            for i in range(p * p, n+1, p):
                is_prime[i] = False
        p += 1

    largest_prime = 0
    for i in range(n, 1, -1):
        if is_prime[i] == True:
            largest_prime = i
            break

    return largest_prime

n = int(input())
largest_prime = find_largest_prime(n)
print(largest_prime)

以上是两种解决求最大质数的方法,你可以根据具体需求选择其中一种方法进行求解。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^