求1到n的素数完整代码
时间: 2023-04-03 19:02:47 浏览: 87
以下是求1到n的素数的完整代码:
#include <stdio.h>
int main() {
int n, i, j, isPrime;
printf("请输入一个正整数n:");
scanf("%d", &n);
printf("1到%d的素数有:\n", n);
for (i = 2; i <= n; i++) {
isPrime = 1; // 假设i是素数
for (j = 2; j < i; j++) {
if (i % j == 0) {
isPrime = 0; // i不是素数
break;
}
}
if (isPrime) {
printf("%d ", i);
}
}
return 0;
}
相关问题
筛选法求n以内的素数C语言代码
筛选法,也称为埃拉托斯特尼筛法(Sieve of Eratosthenes),是一个高效的寻找一定范围内所有质数的经典算法。以下是C语言实现的简化版筛法求n以内素数的代码:
```c
#include <stdio.h>
#define MAX 100 // 可以调整到n的实际值
int isPrime[MAX+1];
void sieveOfEratosthenes(int n) {
// 初始化所有数字为质数标志
for (int i = 2; i <= n; i++)
isPrime[i] = 1;
// 从2开始,将所有它的倍数标记为合数
for (int p = 2; p * p <= n; p++) {
// 如果isPrime[p]还未被修改,则p是质数
if (isPrime[p] == 1) {
for (int i = p * p; i <= n; i += p)
isPrime[i] = 0; // 标记为合数
}
}
}
// 打印小于等于n的所有素数
void printPrimes(int n) {
for (int p = 2; p <= n; p++)
if (isPrime[p])
printf("%d ", p);
}
int main() {
int n = 30; // 指定你要找n范围内的素数
sieveOfEratosthenes(n);
printf("Prime numbers up to %d are:\n", n);
printPrimes(n);
return 0;
}
```
这个代码首先创建了一个布尔数组isPrime,然后从2开始,将所有2的倍数标记为非质数(即合数)。接着,遍历未被标记的数(即质数),将其倍数也标记为非质数。最后,打印出小于等于n的所有质数。
写一个求n以内包括n的素数的代码
以下是求n以内包括n的素数的Python代码:
```python
def is_prime(num):
if num <= 1:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
def find_primes(n):
primes = []
for i in range(2, n+1):
if is_prime(i):
primes.append(i)
return primes
n = int(input("请输入一个正整数n:"))
primes = find_primes(n)
print("小于等于{}的素数为:{}".format(n, primes))
```
首先定义了一个判断一个数是否为素数的函数`is_prime()`,然后定义了一个求小于等于n的所有素数的函数`find_primes()`。`find_primes()`函数中,我们从2开始遍历到n,对于每个数i,如果它是素数,则加入到primes列表中。最后输出primes列表即可。
阅读全文