求100以内的素数c语言山科
时间: 2023-11-22 21:46:22 浏览: 129
要求100以内的素数,可以使用筛选法来解决。具体步骤如下:
1. 定义一个长度为100的数组,用来存储每个数是否为素数。
2. 将数组中的所有元素初始化为1,表示所有数都是素数。
3. 从2开始,将数组中2的倍数、3的倍数、4的倍数……都标记为非素数。
4. 输出数组中值为1的元素的下标,即为100以内的素数。
以下是示例代码:
```
#include <stdio.h>
int main() {
int prime[100] = {1}; // 初始化数组,0表示非素数,1表示素数
int i, j;
for (i = 2; i < 100; i++) {
if (prime[i] == 0) continue; // 如果已经被标记为非素数,则跳过
for (j = i * 2; j < 100; j += i) {
prime[j] = 0; // 标记为非素数
}
}
printf("100以内的素数有:\n");
for (i = 2; i < 100; i++) {
if (prime[i] == 1) printf("%d ", i);
}
printf("\n");
return 0;
}
```
相关问题
筛选法求100以内素数 c语言
筛选法,也叫埃拉托斯特尼筛法(Sieve of Eratosthenes),是一种古老的算法,用于查找一定范围内的所有质数。以下是使用 C 语言实现的一个简单版本,该算法逐个标记出从2到目标值(这里是100)之间的每一个合数(非质数),然后剩下的未被标记的就是素数:
```c
#include <stdio.h>
void sieve_of_eratosthenes(int limit) {
// 初始化布尔数组表示每个数字是否是质数
int is_prime[limit + 1] = {0};
for (int i = 2; i <= limit; i++) {
is_prime[i] = 1;
}
// 打印2作为第一个质数
printf("%d ", 2);
// 对于从3开始的所有奇数,如果它们是质数,则打印并标记其后续倍数为合数
for (int i = 3; i * i <= limit; i += 2) {
if (is_prime[i]) {
for (int j = i * i; j <= limit; j += i * 2) {
is_prime[j] = 0;
}
}
}
// 输出所有大于2的质数
for (int i = 3; i <= limit; i += 2) {
if (is_prime[i])
printf("%d ", i);
}
}
int main() {
sieve_of_eratosthenes(100);
return 0;
}
```
当你运行这段代码时,它会输出100以内的所有素数。
求十以内素数c语言写
当然可以!下面是一个用 C 语言编写的程序,用于求出10以内的所有素数。
```c
#include <stdio.h>
int isPrime(int n) {
if (n <= 1) return 0;
for (int i = 2; i * i <= n; ++i) {
if (n % i == 0)
return 0;
}
return 1;
}
void findPrimesWithinTen() {
printf("10以内的素数有: ");
for (int num = 2; num < 10; ++num) {
if (isPrime(num)) {
printf("%d ", num);
}
}
printf("\n");
}
int main() {
findPrimesWithinTen();
return 0;
}
```
### 程序解释:
1. **函数 `isPrime`**:
- 判断一个整数是否为素数。
- 如果输入的数字小于等于1,则返回0(不是素数)。
- 使用循环检查从2到该数平方根之间的每个数能否整除它;如果能整除则返回0(不是素数),否则返回1(是素数)。
2. **函数 `findPrimesWithinTen`**:
- 打印“10以内的素数有: ”这一提示信息。
- 循环遍历2到9这8个自然数,并调用 `isPrime` 函数判断其是不是素数。
- 若某数值确实为素数就将其打印出来。
3. **主函数 `main`**:
- 调用了 `findPrimesWithinTen()` 来显示结果并结束程序运行。
通过以上代码你可以轻松地找出并展示10以内的全部质数啦!
阅读全文
相关推荐












