MOOC 素数和(5分)
题目
题目内容:
我们认为2是第一个素数,3是第二个素数,5是第三个素数,依次类推。
现在,给定两个整数n和m,0<n<=m<=200,你的程序要计算第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入格式:
两个整数,第一个表示n,第二个表示m。
输出格式:
一个整数,表示第n个素数到第m个素数之间所有的素数的和,包括第n个素数和第m个素数。
输入样例:
2 4
输出样例:
15
时间限制:500ms内存限制:32000kb
解题思路
分析
1.首先循环出素数,给素数下标i。从2开始,如果是素数,加和且i++
。
2.用isPrime == 1
判别是否为素数,每次大循环后重置
总结
isPrime
的使用。
代码
#include<stdio.h>
int main(){
int a,b;
scanf("%d %d",&a,&b);
int i=0,j=2;
int result = 0;
int k;
int isPrime;//判断是否为素数
while(i<b){//每个数的循环
isPrime = 1;
for(k=2;k<j;k++){//素数检验循环
if(j%k == 0){
isPrime = 0;
break;
}
}
if(isPrime == 1){
i++;
}
if(i>=a&&i<=b&&isPrime == 1){
result += j;
}
j++;
}
printf("%d\n",result);
return 0;
}
疑难点以及一些测试数据
input :1 1
output:2
input:3
output:10
也没有什么难点,考点是循环的嵌套。