素数和(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退出循环就可以了。
修改如下:
参考链接:
#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;
}