问题
素数和(5分)
题目内容:
我们认为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 a;
int n;
int x;
int i;
int s;
scanf("%d",&n);
for(x=1;a<200;x++){
int isp=1;
for(i=2;i<x;i++){
if(x%i==0){
isp=0;
break;
}
}
if(isp==1){
s+=x;
printf("%d ",x);
a++;
if(a==n){
printf("前n个素数");
break;
}
}
}
printf("\n");
printf("%d",s);
printf("\n");
int b;
int m;
int y;
int z;
int t;
scanf("%d",&m);
for(y=1;b<200;y++){
int isf=1;
for(z=2;z<y;z++){
if(y%z==0){
isf=0;
break;
}
}
if(isf==1){
t+=y;
printf("%d ",y);
b++;
if(b==m){
printf("前m个素数");
break;
}
}
}
printf("\n");
printf("%d",t);
return 0;```
为什么输出结果,只有第一次可以计算,第二次就会错误,注释完成之后就可以输出正常的结果,有什么办法解决吗

```c
#include <stdio.h>
int main(){
/*
int a;
int n;
int x;
int i;
int s;
scanf("%d",&n);
for(x=1;a<200;x++){
int isp=1;
for(i=2;i<x;i++){
if(x%i==0){
isp=0;
break;
}
}
if(isp==1){
s+=x;
printf("%d ",x);
a++;
if(a==n){
printf("前n个素数");
break;
}
}
}
printf("\n");
printf("%d",s);
printf("\n");
*/
int b;
int m;
int y;
int z;
int t;
scanf("%d",&m);
for(y=1;b<200;y++){
int isf=1;
for(z=2;z<y;z++){
if(y%z==0){
isf=0;
break;
}
}
if(isf==1){
t+=y;
printf("%d ",y);
b++;
if(b==m){
printf("前m个素数");
break;
}
}
}
printf("\n");
printf("%d",t);
return 0;```
这样第二段就可以正常输出了,有什么办法可以让两次一起输出吗,刚开始学习c语言不太明白是不是自己有哪里用错了还是语言逻辑用错了。
