连续素数之和(Uva 1210)
2018-03-14 14:01
239 查看
2<=n<=10000,而10000之内的素数只有1229个所以打表就行,然后用map存放各种连续和情况(这是最先想到的方法)QAQ#include<bits/stdc++.h>
using namespace std;
int prime[10005];
int a[1229];
map<int,int>s;
void g()
{
memset(prime,0,sizeof(prime));
for(int i=2;i*i<=10000;i++)
{
if(!prime[i])
{
for(int j=i*i;j<=10000;j+=i)
prime[j]=1;
}
}
int j=0;
for(int i=2;i<=10000;i++)
{
if(!prime[i])
a[j++]=i;
}
for(int i=1;i<=j;i++)
{
for(int k=0;k+i<=j;k++)
{
int t=0;
for(int m=k;m<i+k;m++)
t+=a[m];
s[t]++;
}
}
}
int main()
{
int n;
g();
while(scanf("%d",&n)==1&&n)
{
printf("%d\n",s
);
}
return 0;
}
using namespace std;
int prime[10005];
int a[1229];
map<int,int>s;
void g()
{
memset(prime,0,sizeof(prime));
for(int i=2;i*i<=10000;i++)
{
if(!prime[i])
{
for(int j=i*i;j<=10000;j+=i)
prime[j]=1;
}
}
int j=0;
for(int i=2;i<=10000;i++)
{
if(!prime[i])
a[j++]=i;
}
for(int i=1;i<=j;i++)
{
for(int k=0;k+i<=j;k++)
{
int t=0;
for(int m=k;m<i+k;m++)
t+=a[m];
s[t]++;
}
}
}
int main()
{
int n;
g();
while(scanf("%d",&n)==1&&n)
{
printf("%d\n",s
);
}
return 0;
}
相关文章推荐
- Sum of Consecutive Prime Numbers UVA - 1210 连续素数之和
- UVa 1210 连续素数之和
- 习题10-5 连续素数之和 uva 1210
- UVa 1210 - Sum of Consecutive Prime Numbers(素数+连续和)
- 习题10-6 连续素数之和 UVa1210
- UVa 1210 连续素数
- 习题10-6 UVA - 1210 Sum of Consecutive Prime Numbers 连续素数之和(滑动窗口)
- UVA 1210 Sum of Consecutive Prime Numbers(素数打表)
- UVA1210Sum of Consecutive Prime Numbers(素数打表 + 连续和)
- Sum of Consec 4000 utive Prime Numbers UVA - 1210——素数表+初级dp思想
- UVALive3399 UVA1210 POJ2739 Sum of Consecutive Prime Numbers【素数筛选+尺取法】
- UVa 1210 - Sum of Consecutive Prime Numbers
- UVa 10140 / POJ 2689 Prime Distance (素数距离&筛两遍)
- 习题10-5 UVA - 1213 Sum of Different Primes 不同的素数之和(DP + 素数打表)
- UVA 3883 某区间的素数 【素数筛法】
- 动态规划:求连续的元素的和(素数个)
- uva 1415 - Gauss Prime(高斯素数)
- EularProject 27: 二次表达式的连续值素数
- UVa 1210 (高效算法设计) Sum of Consecutive Prime Numbers
- UVa 10539 (筛素数、二分查找) Almost Prime Numbers