problem 4-6 质数求和
时间限制:1S
问题描述
输入一个大于20的正整数p,求出正整数范围内第p个质数(或素数,大于1且只能被1和自己整除的正整数,)到第p+10个质数之和。其中,第1个质数为2,第2个质数为3,第3个质数为5,第4个质数为7,依次类推。输入说明
一行输入1个整数p,20< p <150。输出说明
第p个质数到第p+10个质数之和。
输入样例:
21
输出样例:
1081
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main()
{
int p,n;
int re=1;
int k=2;//待判断数
int j=1;//质数个数
int sum=0;
int a[165];//质数放进数组
scanf("%d",&p);
p+=10;
while(j<=p)//求前p+10个质数并放进数组a[j]
{
n=sqrt(k);//质数判断的循环次数
for(int i=2;i<=n;i++)
{
if(k%i==0)
{
re=0;
break;
}
re=1;
}
if(re==1)
{
a[j]=k;
j++;
}
k++;
}
for(j=p-10;j<=p;j++)//第p到第p+10个质数求和
{
sum+=a[j];
}
printf("%d",sum);
return 0;
}
小结:
int re要先赋值为1,否则在i>sqrt(n)时for循环进不去