判断101-n间有多少素数(含端点的101和n) 素数是质数:1,3,5,7,11,....... 只有1和本身是它因子。 判断101-n间有多少素数(含端点的101和n) 输入n 输出一个整数。 样例输入 200 输出 21 用C语言进行输出
时间: 2024-12-21 10:29:49 浏览: 9
为了判断101到n之间的素数个数,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)。这是一种古老的算法,用于找出一定范围内所有的素数。以下是用C语言实现的一个简单版本:
```c
#include <stdio.h>
// 辅助函数,返回两个数的最大公约数
int gcd(int a, int b) {
if (b == 0)
return a;
return gcd(b, a % b);
}
// 主函数计算并输出素数个数
int count_primes(int n) {
// 确保n大于等于101
if (n < 101)
return 0;
// 初始化一个布尔数组,所有元素都标记为可能是素数
int is_prime[101+n];
for (int i = 0; i <= n+100; i++)
is_prime[i] = 1;
// 素数从2开始,除了2之外,所有的偶数都不是素数
is_prime[0] = is_prime[2] = 0;
// 遍历到√n,因为较大数不可能有小于其平方根的小于它的因数
for (int i = 3; i * i <= n + 100; i += 2) {
// 如果当前数字是素数,则将其倍数标记为合数
if (is_prime[i]) {
for (int j = i * i; j <= n + 100; j += i * 2) {
is_prime[j] = 0;
}
}
}
// 计算101到n之间的素数个数
int prime_count = 0;
for (int i = 101; i <= n; i++) {
if (is_prime[i])
prime_count++;
}
return prime_count;
}
int main() {
int n;
printf("Enter the value of n: ");
scanf("%d", &n);
int result = count_primes(n);
printf("There are %d primes between 101 and %d.\n", result, n);
return 0;
}
```
在这个程序中,用户输入`n`值,然后`count_primes`函数会计算并返回101到n之间的素数个数。
阅读全文