POJ 2739 Sum of Consecutive Prime Numbers

题目链接:http://poj.org/problem?id=2739

这个题是个简单题,反正是要求有多少个素数序列和,那就先把范围内的所有素数先用一个数组存起来,然后找的时候,外循环控制序列开始的数字,内循环控制序列元素个数和序列和,内循环结束判断该序列是否满足,是则和加一,不是则不做处理。外循环结束输出和,代码如下:

 #include<iostream>
 #include<stdio.h> 
 #include<math.h>
 #include<string.h>
 using namespace std;
 int isPrime(int n)
 {
 	if(n == 2)
 		return 1;
 	else
 	{
 		for(int i = 2;i <= sqrt(n);i++)
 		{
 			if(n % i == 0)
 			{
 				return 0;
 				break;
 			}
 		}
 		return 1;
 	}
 }
 int main()
 {
 	int n,prime[10000],x = 0;
 	for(int i = 2;i < 10001; i++)
 	{
 		if(isPrime(i))
 		{
 			prime[x++] = i;
 		}
 	}
 	while(scanf("%d",&n) != EOF)
 	{
	 	int cnt,ans = 0;
 		if(n == 0)	break;
 		else
 		{
 			for(int i = 0;n >= prime[i]; i++)
 			{
 				cnt = 0;
 				for(int j = i;j < x && cnt < n;j++)
 				{
 					cnt += prime[j];
 				}
 				if(cnt == n)	ans++;
 			}
 			cout << ans << endl;
 		}
 	}
 	return 0;
 }

猜你喜欢

转载自blog.csdn.net/xiao__hei__hei/article/details/81273549