用C语言输出二到N之间的全部素数每行输出十个
时间: 2024-11-09 12:28:57 浏览: 11
输出n以内的所有素数 c语言:找出N以内的所有素数
要使用C语言输出从2到指定整数N之间的所有素数,每行输出十个,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)。以下是相应的代码实现:
```c
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num <= 1)
return false;
for (int i = 2; i * i <= num; i++)
if (num % i == 0)
return false;
return num > 1;
}
void print_primes(int n, int limit) {
bool prime[limit + 1];
memset(prime, true, sizeof(prime)); // 初始化所有数为素数
for (int p = 2; p * p <= limit; p++) {
// 如果prime[p]未被标记,说明p是素数
if (prime[p]) {
// 标记p的倍数为合数
for (int i = p * p; i <= limit; i += p)
prime[i] = false;
}
}
int count = 0; // 当前行计数
for (int i = 2; i <= limit; i++) {
if (prime[i]) {
printf("%d", i); // 输出素数
count++;
if (count == 10 || i == limit) {
printf("\n"); // 到达一行末尾或到达N时换行
count = 0;
}
}
}
}
int main() {
int N;
printf("请输入一个整数N: ");
scanf("%d", &N);
print_primes(2, N); // 打印2到N之间的素数
return 0;
}
```
在这个程序中,`is_prime`函数用于检查一个数是否为素数,`print_primes`函数则使用了埃拉托斯特尼筛法找到并打印指定范围内的素数。
阅读全文