Press "Enter" to skip to content

素数求和

我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个正整数n、m。0<n<=m<=200
你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:两个整数,第一个表示n,第二个表示m。
输出格式:一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:2 4
输出样例:15

#include<stdio.h>
int main(){
    int n,m,i;
    int sum = 0;
    int count = 0;
//限定n和m的输入是在题目限定范围内 
    do{
        scanf("%d %d",&n,&m);
        }while(n<=0||m<n||m>200);

    for(i=2;;i++){
        int isPrime = 1;
//判断是否为素数           
        int k;      
        for (k=2;k<i-1;k++){
            if(i%k == 0){
                isPrime = 0;
                break;
            }
        }
//当i为素数时,进行计算       
        if(isPrime){
            count ++;
//序列大于m时退出循环
            if(count > m){
                break;
            }
//序列大于n时开始计算
            if(count >= n){
                sum += i;
            }
        }
    }       
    printf("%d",sum);
    return 0;
}

tips:题干中的n和m的取值范围是考察点之一,很容易忽略。