题目描述 输入一个整数n,输出不大于n的所有素数。 所谓素数,一般指质数,质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。 输入示例:10 输出示例:2 3 5 7
时间: 2023-05-13 12:07:24 浏览: 152
以下是一个简单的 Python 代码实现:
```
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num ** 0.5) + 1):
if num % i == 0:
return False
return True
n = int(input("请输入一个整数n:"))
primes = [i for i in range(2, n+1) if is_prime(i)]
print("不大于n的所有素数为:", primes)
```
输入示例:10
输出示例:不大于n的所有素数为: [2, 3, 5, 7]
相关问题
c++输入一个整数n,输出不大于n的所有素数。怎么编程最简单
在 C++ 中,我们可以使用简单的埃拉托斯特尼筛法 (Sieve of Eratosthenes) 来实现这个功能。这种方法是一种查找一定范围内所有质数的有效算法。以下是基本的步骤:
1. 创建一个布尔数组 `isPrime`,大小为 `n+1`,并初始化所有元素为 `true`,表示从 0 到 n 都可能是质数。
2. 从 2 开始遍历数组,因为除了 1 以外,所有偶数都不是质数,将 `isPrime[2]` 设为 `false`。
3. 对于每个找到的质数 i,将它的倍数都标记为非质数,即 `isPrime[i*i..n] = false`。这里只需要考虑 i 的平方及以后的数,因为之前已经被较小的质数处理过了。
4. 遍历 `isPrime` 数组,找出所有的值为 `true` 的索引,它们就是小于等于 n 的素数。
下面是简化的 C++ 代码示例:
```cpp
#include <iostream>
using namespace std;
void printPrimes(int n) {
bool isPrime[n + 1];
fill(isPrime, isPrime + n + 1, true);
isPrime[0] = isPrime[1] = false; // 0 和 1 不是质数
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i)
isPrime[j] = false;
}
}
for (int i = 2; i <= n; i++) {
if (isPrime[i])
cout << i << " ";
}
}
int main() {
int n;
cout << "Enter a number: ";
cin >> n;
printPrimes(n);
return 0;
}
```
c语言 给定一个正整数N,输出不大于N的所有质数。
好的,我可以回答这个问题。以下是一个简单的 C 语言程序,可以输出不大于 N 的所有质数:
```c
#include <stdio.h>
int main() {
int n, i, j, is_prime;
printf("请输入一个正整数 N:");
scanf("%d", &n);
printf("不大于 %d 的所有质数为:\n", n);
for (i = 2; i <= n; i++) {
is_prime = 1;
for (j = 2; j < i; j++) {
if (i % j == ) {
is_prime = ;
break;
}
}
if (is_prime) {
printf("%d ", i);
}
}
printf("\n");
return ;
}
```
希望这个程序能够帮到你!
阅读全文