C语言求100以内的素数
时间: 2023-04-08 21:01:16 浏览: 105
可以回答这个问题。以下是C语言代码:
#include <stdio.h>
int main() {
int i, j, flag;
for (i = 2; i <= 100; i++) {
flag = 1;
for (j = 2; j <= i / 2; j++) {
if (i % j == 0) {
flag = 0;
break;
}
}
if (flag == 1) {
printf("%d ", i);
}
}
return 0;
}
相关问题
c语言求100以内素数
在C语言中,有多种方法可以求100以内的素数。其中,欧拉筛法是一种时间复杂度为O(n)的高效算法,相比于朴素筛法和埃式筛法,具有更高的效率和更低的时间复杂度。该算法的基本思路是:用一个布尔数组isPrime来记录每个数是否为素数,初始时将所有数都标记为素数,然后从2开始遍历到n,对于每个素数i,将i的倍数标记为合数,最后输出所有未被标记为合数的素数即可。
以下是一个使用欧拉筛法求100以内素数的C语言程序:
```
#include <stdio.h>
#include <stdbool.h>
int main() {
int n = 100;
bool isPrime[101];
int prime[101];
int cnt = 0; //记录素数的个数
//初始化isPrime数组
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
//欧拉筛法
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
prime[cnt++] = i; //将i加入素数数组
}
for (int j = 0; j < cnt && i * prime[j] <= n; j++) {
isPrime[i * prime[j]] = false; //将当前数与质因数的积标记为合数
if (i % prime[j] == 0) {
break; //优化,保证每个合数只会被它的最小质因数筛选一次
}
}
}
//输出素数数组
for (int i = 0; i < cnt; i++) {
printf("%d\n", prime[i]);
}
return 0;
}
```
除了欧拉筛法,还有其他方法可以求100以内的素数,比如埃式筛法和遍历至该数的平方根等。这些方法的具体实现可以参考引用中提供的代码。如果你想了解更多关于素数的知识,可以参考相关书籍或论文。
用C语言求100以内素数
在C语言中,我们可以使用一个简单的算法来找出100以内的所有素数。这里我们采用埃拉托斯特尼筛法(Sieve of Eratosthenes),这是一种古老的寻找素数的有效方法。以下是相应的C代码:
```c
#include <stdio.h>
// Function to find prime numbers up to a given limit
void findPrimes(int n) {
// 创建一个布尔数组 "prime[0..n]" 用于标记是否为素数
int prime[n + 1];
memset(prime, 1, sizeof(prime)); // 全部初始化为true
// 将 0 和 1 标记为非素数
prime[0] = prime[1] = 0;
// 遍历到sqrt(n),如果prime[i]为true,则它是一个素数
for (int i = 2; i * i <= n; i++) {
// 如果prime[i]还未改变,说明i是质数,将它的倍数标记为非素数
if (prime[i]) {
for (int j = i * i; j <= n; j += i)
prime[j] = 0;
}
}
// 输出所有的素数
for (int p = 2; p <= n; p++)
if (prime[p])
printf("%d ", p);
}
int main() {
int limit = 100;
printf("Prime numbers between 0 and %d are:\n", limit);
findPrimes(limit);
return 0;
}
```
当你运行这段代码,它会打印出100以内的所有素数。
阅读全文