首页 > 代码库 > UVA1210(连续素数和)。
UVA1210(连续素数和)。
继续寻找水题。。。
把所有的素数存进一个数组,然后用递归的方法做比较简单。
1 #include <iostream> 2 #include <algorithm> 3 #include <cstring> 4 #include <cstdio> 5 #include <cstdlib> 6 #include <cmath> 7 8 using namespace std; 9 const int maxn = 100000; 10 int a[maxn]; 11 int c[maxn]; 12 int cnt = 0; 13 void prime() 14 { 15 int i,j,k; 16 for(i=0;i<maxn;i++) 17 a[i]=i; 18 a[0]=0; 19 a[1]=0; 20 for(i=2;i<maxn;i++) 21 { 22 for(j=2*i;j<maxn;j+=i) 23 { 24 a[j]=0; 25 } 26 } 27 j=0; 28 for(i=0;i<maxn;i++) 29 { 30 if(a[i]) 31 c[j++]=a[i]; 32 } 33 } 34 void Calculate(int *c,int n,int k) 35 { 36 int i,j; 37 int t=n; 38 for(i=k;c[i]<=n;i++) 39 { 40 t-=c[i]; 41 if(t==0) 42 { 43 cnt++; 44 k++; 45 Calculate(c,n,k); 46 } 47 if(t<0&&t+c[i]>0) 48 { 49 k++; 50 Calculate(c,n,k); 51 } 52 } 53 } 54 int main() 55 { 56 prime(); 57 int i,j,k,n; 58 while(scanf("%d",&n)&&n) 59 { 60 Calculate(c,n,0); 61 printf("%d\n",cnt); 62 cnt = 0; 63 } 64 return 0; 65 }
UVA1210(连续素数和)。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。