用c语言的筛法求100内的素数
时间: 2024-01-06 21:04:23 浏览: 49
以下是使用C语言的筛法求100以内素数的代码示例:
```c
#include <stdio.h>
#include <math.h>
void main(){
int a[100], i, j;
int range = 100;
// 初始化数组
for(i = 0; i < 100; i++)
a[i] = i + 1;
a[0] = 0;
// 筛法求素数
for(i = 1; i < sqrt(range); i++){
for(j = i + 1; j < 100; j++){
if(a[i] != 0 && a[j] % a[i] == 0)
a[j] = 0;
}
}
// 输出素数
for(i = 0; i < 100; i++){
if(a[i])
printf("%d ", a[i]);
}
}
```
该代码使用了一个大小为100的数组a来表示100以内的自然数。首先将数组中的所有元素初始化为对应的自然数。然后从2开始,依次遍历数组中的每个元素,如果该元素不为0(即未被划去),则将其后面所有能被该元素整除的数划去(将对应位置的元素置为0)。最后,输出数组中不为0的元素,即为100以内的素数。
相关问题
用筛法求n内的素数C语言
非常抱歉,我之前的回答有一个错误。以下是使用筛法求解n以内的素数的修正代码:
```c
#include <stdio.h>
#include <stdbool.h>
void sieveOfEratosthenes(int n) {
// 创建一个布尔数组,用于标记数字是否为素数
bool prime[n+1];
// 初始化数组,将所有数字标记为素数(true)
for (int i = 2; i <= n; i++) {
prime[i] = true;
}
// 使用筛法,将非素数的倍数标记为非素数(false)
for (int p = 2; p * p <= n; p++) {
if (prime[p] == true) {
for (int i = p * 2; i <= n; i += p) {
prime[i] = false;
}
}
}
// 输出素数
printf("素数:");
for (int p = 2; p <= n; p++) {
if (prime[p] == true) {
printf("%d ", p);
}
}
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
// 调用筛法函数
sieveOfEratosthenes(n);
return 0;
}
```
这段修正后的代码使用了正确的筛法(埃拉托斯特尼筛法)来找出n以内的所有素数。修正的部分是在第二个循环中,将起始值从p*p改为p*2,以正确标记非素数的倍数。
希望这次能帮到你!如有任何疑问,请随时提出。
用筛法求之n内的素数C语言
你好!要使用筛法求解n以内的素数,可以使用以下C语言代码示例:
```c
#include <stdio.h>
#include <stdbool.h>
void sieveOfEosthenes(int n) {
// 创建一个尔数组,用于标记数字是否为素
bool prime[n+1];
// 初始化数组,将所有数字标记为素数(true)
for (int i = 2; i <= n; i++) {
prime[i] = true;
}
// 使用筛法,将非素数的倍数标记为非素数(false)
for (int p = 2; p * p <= n; p++) {
if (prime[p] == true) {
for (int i = p * p; i <= n; i += p) {
prime[i] = false;
}
}
}
// 输出素数
printf("素数:");
for (int p = 2; p <= n; p++) {
if (prime[p] == true) {
printf("%d ", p);
}
}
}
int main() {
int n;
printf("请输入一个正整数n: ");
scanf("%d", &n);
// 调用筛法函数
sieveOfEratosthenes(n);
return 0;
}
```
这段代码使用了筛法(埃拉托斯特尼筛法)来找出n以内的所有素数。首先,创建一个布尔数组来标记数字是否为素数。然后,使用循环和条件语句,将非素数的倍数标记为非素数。最后,输出所有标记为素数的数字。
希望这能帮助到你!如有任何疑问,请随时提出。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)