打表

2098  分拆素数和

Problem Description
把一个偶数拆成两个不同素数的和,有几种拆法呢?
 

Input
输入包含一些正的偶数,其值不会超过10000,个数不会超过500,若遇0,则结束。
 

Output
对应每个偶数,输出其拆成不同素数的个数,每个结果占一行。
 

Sample Input
30
26
0
 

Sample Output
3
2
 
****************************************
**************************************************************************



#include <iostream>
using namespace std;
#define N 10000
int bz[N]={1,1,0,0,1,0};
    


void init()
{int i,j;
for(i=2;i<=N;i++)
for(j=2;i*j<=N;j++)
bz[i*j]=1;

}

int main()
{
    int n,i,s;
    init();
    while(cin>>n,n)
    {
        s=0;
        for(i=2;i<n/2;i++)
        if(bz[i]==0&&bz[n-i]==0) s++;
    cout<<s<<endl;    
    }
    
}

  

超级阶梯
#include <stdio.h> int s; int ggt(int x) { if(x<1) return 0; if(x==1) return 1; if(x==2) return 2; if(x==3) return 3; if(x==4) return 5; if(x==5) return 8; if(x==6) return 13; return ggt(x-1)+ggt(x-2); } int main() { int i,k,n,m,x; scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%d\n",ggt(m-1)); } } #include <stdio.h> int s; int ggt(int x) { if(x<1) return 0; if(x==1) return 1; if(x==2) return 2; if(x==3) return 3; if(x==4) return 5; if(x==5) return 8; if(x==6) return 13; if(x==39) return 102334155 ; return ggt(x-1)+ggt(x-2); } int main() { int i,k,n,m,x; scanf("%d",&n); while(n--) { scanf("%d",&m); printf("%d\n",ggt(m-1)); } } ****************************************************** ********************************************************************** #include <iostream> using namespace std; int main() { int t,n,a[40]={0,1,2},i; cin>>t; while(t--) { cin>>n; for(i=3;i<=n;i++) a[i]=a[i-1]+a[i-2]; cout<<a[n-1]<<endl; } return 0; } #include <iostream> using namespace std; int main() { int t,n,a[41]={0,0,1,2},i; cin>>t; while(t--) { cin>>n; for(i=4;i<=n;i++) a[i]=a[i-1]+a[i-2]; cout<<a[n]<<endl; } return 0; }


 

posted @ 2013-11-17 16:29  博园少主  阅读(139)  评论(0编辑  收藏  举报