c语言编写一段程序:用筛选法求100之内的素数
时间: 2023-12-03 12:02:56 浏览: 101
```
#include <stdio.h>
int main() {
int i, j, prime[101] = {0}, count = 0;
// 筛选法求素数
for (i = 2; i <= 100; i++) {
if (prime[i] == 0) {
count++;
for (j = i * i; j <= 100; j += i) {
prime[j] = 1;
}
}
}
// 输出素数
printf("100以内的素数有:\n");
for (i = 2; i <= 100; i++) {
if (prime[i] == 0) {
printf("%d ", i);
}
}
printf("\n共有%d个素数\n", count);
return 0;
}
```
相关问题
生成c语言代码:用筛选法求100以内的素数
好的,以下是用筛选法求100以内的素数的C语言代码:
```c
#include <stdio.h>
int main() {
int n = 100;
int prime[n + 1];
for(int i = 2; i <= n; i++) {
prime[i] = 1;
}
for(int i = 2; i * i <= n; i++) {
if(prime[i] == 1) {
for(int j = i * i; j <= n; j += i) {
prime[j] = 0;
}
}
}
printf("100以内的素数有:\n");
for(int i = 2; i <= n; i++) {
if(prime[i] == 1) {
printf("%d ", i);
}
}
return 0;
}
```
使用筛选法求素数的原理是:先把所有数标记为素数,然后从2开始,将所有2的倍数标记为合数,然后再从3开始,将所有3的倍数标记为合数,以此类推,直到标记完所有小于等于n的素数。最后再遍历一遍数组,输出所有标记为素数的数。
C语言:用筛选法求100之内的素数,将结果存放在一个一维数组中
在C语言中,我们可以使用筛法(如埃拉托斯特尼筛法)来找出100以内的所有素数,并将它们存储在一个一维数组中。这里是一个简单的示例:
```c
#include <stdio.h>
#define MAX_PRIME 100
// 判断是否为素数的函数
int is_prime(int n) {
if (n <= 1)
return 0;
for (int i = 2; i * i <= n; i++) {
if (n % i == 0)
return 0;
}
return 1;
}
// 筛选出100以内素数并将结果存入数组
void sieve_of_eratosthenes(int primes[MAX_PRIME]) {
int count = 0;
bool is_marked[MAX_PRIME + 1] = {false}; // 初始化标记数组
for (int i = 2; i <= MAX_PRIME; i++) {
if (!is_marked[i]) { // 如果i未被标记为合数
primes[count++] = i; // 将其添加到素数数组
for (int j = i * i; j <= MAX_PRIME; j += i) {
is_marked[j] = true; // 标记j的倍数为合数
}
}
}
primes[count] = 0; // 填充数组直到适当长度
}
int main() {
int prime_array[MAX_PRIME];
sieve_of_eratosthenes(prime_array);
printf("100以内的素数有:\n");
for (int i = 0; prime_array[i]; i++) {
printf("%d ", prime_array[i]);
}
printf("\n");
//
阅读全文