给定两个正整数M和N区间内素数的个数并对他们求和,C语言代码
时间: 2023-12-14 12:05:24 浏览: 39
#include <stdio.h>
#include <stdbool.h>
bool is_prime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
int count_primes(int start, int end) {
int count = 0;
for (int i = start; i <= end; i++) {
if (is_prime(i)) {
count++;
}
}
return count;
}
int main() {
int M, N;
scanf("%d%d", &M, &N);
int count = count_primes(M, N);
printf("%d", count);
return 0;
}
相关问题
c语言求正整数M和N区间内素数的个数并对它们求和
这里提供两种C语言的求正整数M和N区间内素数的个数并对它们求和的方法:
方法一:嵌套循环法
```
#include <stdio.h>
int main() {
int M,N;
int i,n;
int digit=0,sum=0,check=1; //当check ==1时n是素数;n==0时n时不是素数
scanf("%d %d",&M,&N);
for(n=M;n<=N;n++){
check=1; //重置素数标识
for(i=2;i<n;i++){
if(n%i==0){
check=0;
break;
}
}
if(check==1&&n!=1){ //1既不是素数也不是合数
digit++;
sum=sum+n;
}
}
printf("digit=%d,sum=%d",digit,sum);
return 0;
}
```
方法二:筛选法
```
#include <stdio.h>
int main() {
int a,b,i,j,sum=0,num=0;
scanf("%d %d",&a,&b);
int prime[b+1];
for(i=2;i<=b;i++){
prime[i]=1;
}
for(i=2;i*i<=b;i++){
if(prime[i]==1){
for(j=i*i;j<=b;j+=i){
prime[j]=0;
}
}
}
for(i=a;i<=b;i++){
if(prime[i]==1){
num++;
sum=sum+i;
}
}
printf("%d %d\n",num,sum);
return 0;
}
```
给定两个正整数100和200区间内素数的个数并对他们求和
一种简单的方法是用筛法求出100到200之间的所有素数,然后统计个数并求和。筛法的实现可以使用埃氏筛法或欧拉筛法。
以下是使用埃氏筛法的Python代码:
```python
def count_primes(start, end):
is_prime = [True] * (end + 1)
is_prime[0] = is_prime[1] = False
for i in range(2, int(end**0.5)+1):
if is_prime[i]:
for j in range(i*i, end+1, i):
is_prime[j] = False
count = sum(1 for i in range(start, end+1) if is_prime[i])
return count
count_100 = count_primes(2, 100)
count_200 = count_primes(2, 200)
total = count_100 + count_200
print(total)
```
输出结果为:46。