给定一个整数m(50<m<20000),找出小于m的最大的10个素数。\n\n输入格式:\n输入在一行中给出一个正整数m(50<m<20000)。\n\n输出格式:\n在一行中按递减顺序输出10个满足条件的素数,
时间: 2023-04-24 18:07:19 浏览: 212
可以使用筛法求素数,先将小于m的所有数标记为合数,然后从2开始,将其倍数标记为合数,直到标记完所有小于m的数。最后再从大到小输出前10个素数即可。
具体实现可以参考以下代码:
#include <iostream>
#include <cstring>
using namespace std;
const int MAXN = 20000;
bool isPrime[MAXN+1];
int main() {
int m;
cin >> m;
// 筛法求素数
memset(isPrime, true, sizeof(isPrime));
isPrime[] = isPrime[1] = false;
for (int i = 2; i <= m; i++) {
if (isPrime[i]) {
for (int j = i*2; j <= m; j += i) {
isPrime[j] = false;
}
}
}
// 输出前10个素数
int count = ;
for (int i = m-1; i >= 2 && count < 10; i--) {
if (isPrime[i]) {
cout << i << " ";
count++;
}
}
return ;
}
相关问题
给定一个整数m(50<m<20000),找出小于m的最大的10个素数。 输入格式: 输入在一行中给出一个正整数m(50<m<20000)。 输出格式: 在一行中按递减顺序输出10个满足条件的素数,
```python
def is_prime(n):
if n <= 1:
return False
for i in range(2, int(n ** 0.5) + 1):
if n % i == 0:
return False
return True
m = int(input())
primes = []
for i in range(m-1, 1, -1):
if is_prime(i):
primes.append(i)
if len(primes) == 10:
break
for i in range(10):
print('{:6d}'.format(primes[i]), end='')
```
--相关问题--:
1. 如何判断一个数是否为素数?
2. 如何找出一个数列
给定一个整数m,50<m<20000,找出小于m的最大的10个素数
A:以下是一个Python代码解决方案:
```python
import math
def is_prime(n):
# 判断一个数是否为素数
if n < 2:
return False
for i in range(2, int(math.sqrt(n)) + 1):
if n % i == 0:
return False
return True
m = int(input("请输入m的值:"))
primes = []
for i in range(m-1, 1, -1):
if is_prime(i):
primes.append(i)
if len(primes) >= 10:
break
print("小于m的最大的10个素数为:", primes)
```
运行结果如下:
```
请输入m的值:100
小于m的最大的10个素数为: [97, 89, 83, 79, 73, 71, 67, 61, 59, 53]
```
阅读全文
相关推荐














