慕课 翁恺老师的c语言课第五周第一题求素数和

素数和(5分) 题目内容: 我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。 现在,给定两个整数n和m,0 int main(){ int a=0; int num=2,sum=0; int n,m; int j=1; scanf("%d %d",&n,&m);// while(j<=m) { num++; for(int i=2;i=n) { sum+=num; } } } printf("%d",sum); return 0; }

可以使用一个循环来遍历从2到后面的数,然后逐个判断遍历到的数是否为素数,如果是素数,并且在所求区间,则累加到和sum中,如果超出了区间,则break退出循环就可以了。

修改如下:

参考链接:


https://qb.zuoyebang.com/xfe-question/question/48fafd5672360351ce605750d0478b6a.html


#include <stdio.h> 
#include <math.h>
int main() {
    // https://blog.csdn.net/qq_43564462/article/details/84644128
    int a=0;
    int num=0,sum=0;
    int n,m;
    int j=n;
    scanf("%d %d",&n,&m);
    
    for(int i=2;;i++){  //2开始遍历后面的数 
        
        int prime=1;
        for(int k=2;k<=(int)sqrt(i);k++){  // 判断当前的数是否为素数 
            if(i%k==0){  // 如果可以整除,则素数标志prime置0,表示不是素数 
                prime=0;
                break;
            }
        }
        
        
        if(prime==1){  // 如果是素数,则继续判断 
            num++;  // 素数数量+1 
            if(num>=n&&num<=m){  // 如果当前的素数在n和m区间内,则累积到和sum中 
                sum+=i;
            }
            
            if(num>m){  // 如果当前素数超出了区间,则break退出循环 
                break;
            }
        }
        
        
        
    }
// https://qb.zuoyebang.com/xfe-question/question/48fafd5672360351ce605750d0478b6a.html
    printf("%d",sum);
    return 0;
}

img