这个题目写了好久,比较臃肿。
/*
题目内容:
我们认为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 m,n,i,j,k,l,x,isprime;
int sum=0;
int cnt=0;
scanf("%d %d",&n,&m);
if(n==m){
if(n==m&&n==1){
x=2;
sum=x;
goto a;
}
else{
cnt=1;
for(i=3;i<=10000;i++){
isprime=1;
for(j=2;j<i;j++){
if(i%j==0){
isprime=0;
break;
}
}
if(isprime==1){
cnt++;
if(cnt==n){
x=i;
sum=x;
goto a;}
}
}
}
}
if(n==1){
x=2;
cnt++;
sum=sum+x;
i=2;
goto out;
}
cnt=1;
for(i=3;i<=10000;i++){
isprime=1;
for(j=2;j<i;j++){
if(i%j==0){
isprime=0;
break;
}
}
if(isprime==1){
cnt++;
if(cnt==n){
x=i;
sum=sum+x;
goto out;}
}
}out:
for(k=i+1;k<=10000;k++){isprime=1;
for(l=2;l<k;l++){
if(k%l==0){
isprime=0;
break;}
}
if(isprime==1){
cnt++;
sum=sum+k;
while(cnt==m){
goto a;
}
}
}a:
printf("%d\n",sum);
return 0;
}