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>
int is(int n)
{
int i;
if(n==2)
{
return 1;
}
else
{
for(i=2;i<n;i++)//所以,往函数里面输入的数不能是1,必须大于等于2
{
if(n%i==0)
{
return 0;//检测到第一个因数就跳出,这样就不用重复检测太多
}
}
return 1;
}
}
int main() {
int p;
scanf("%d",&p);
int n=2,count=0,flag=0,sum=0;//n必须从2开始.flag指的是从2开始时第几个质数,count值得是从
//第p个质数开始是第几个质数
while(count<11)
{
if(is(n)==1)
{
flag++;
if(flag>p-1)
{
sum=sum+n;
count++;
}
}
n++;
}
printf("%d",sum);
return 0;
}