1
素数和(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 isprime(int number);
int main (int argc,const char*argv[]){
int n,m;
scanf("%d",&n);
scanf("%d",&m);
int a[200];
int cnt=0;
int amount=0;
for(int i=2;i<=200;i++){
int ret=isprime(i);
if(ret==1){
a[cnt++]=i;
}
ret=0;
}
int temp=n-1;
for(temp;temp<=m-1;temp++){
amount+=a[temp];
}
printf("%d",amount);
return 0;
}
int isprime(int number){
int prime=1;
for(int i=2;i<number;i++){
if(number%i==0){
prime=0;
break;
}
}
return prime;
}
for(int i=2;i<=200;i++){//这里i表示第i个素数,这是错误的
int ret=isprime(i);//这里i表示第i个整数,所以i不应该有限制
if(ret==1){
a[cnt++]=i;//真正有限制的应该是cnt,cnt<200
}
ret=0;
}
for(int i=2,cnt=0;cnt<200;i++,cnt++){
int ret=isprime(i);
if(ret==1){
a[cnt]=i;
}
ret=0;
}