求小于n的所有素数,按照每行10个显示出来。利用C语言来实现
时间: 2024-09-26 07:09:10 浏览: 43
在C语言中,我们可以使用Sieve of Eratosthenes算法来找到小于n的所有素数,并将其分组打印。以下是实现这一功能的一个简单示例:
```c
#include <stdio.h>
#include <stdbool.h>
#define N 100 // 改变这个值以适应更大的n
// 判断是否为素数
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 true;
}
void print_primes(int n) {
bool prime[N]; // 初始化所有数字为可能是素数
for (int i = 2; i < N; i++)
prime[i] = true;
// 使用Sieve算法找出素数
for (int p = 2; p * p < N; p++) {
if (prime[p]) { // 如果p是素数
for (int i = p * p; i < N; i += p)
prime[i] = false;
}
}
int count = 0;
for (int i = 2; i < N; i++) {
if (prime[i])
printf("%d ", i); // 打印素数
count++;
if (count % 10 == 0) { // 当计数达到10时换行
printf("\n");
}
}
if (count % 10 != 0) { // 如果最后一行不足10个素数,补空格
for (int j = count; j < 10; j++)
printf(" ");
printf("\n");
}
}
int main() {
int n = 100; // 需要查找的范围
printf("小于%d的素数按每行10个显示:\n", n);
print_primes(n);
return 0;
}
```
运行此程序,它将打印出小于`n`的所有素数,其中`n`默认为100。你可以通过修改`#define N`来改变输出素数的范围。
阅读全文