码迷,mamicode.com
首页 > 其他好文 > 详细

poj2793 素数和

时间:2016-04-27 22:37:03      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

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

 

#include<iostream>
using namespace std;
 int count=0;
 int prim[1234]={2,3};
 void primer()
 {                      //列出所有素数
     int f,i,j,q=2;
     for(i=5;i<10000;i+=2)
      {

      for(j=0,f=1;prim[j]*prim[j]<=i;j++)   
         if(i%prim[j]==0)f=0;       
     if(f)
     {
         prim[q++]=i;       //小技巧
     }
      }

 }
 void minu(int n,int i)
 {
         if(i<0)return ;
     if(n==prim[i])
     {
         count++;
     }
     else if(n>prim[i])
        minu(n-prim[i],i-1);    
        else return ;
        return;

 }



 int main()
 {    primer();
     int n,k,i;
     while(cin>>n)
     {if(n==0)break;
         for( i=0;i<1230;i++)
         if(n==prim[i]){count++;k=i-1;break;}
         else if(n<prim[i]){k=i-1;break;}    //找到k(和输入的数最接近的素数的位置)
         for(  i=k;i>=0;i--)
            minu(n,i);        //倒着减找到,和相等的组合
         cout<<count<<endl;
         count=0;
     }
     return 0;
 }

  

poj2793 素数和

标签:

原文地址:http://www.cnblogs.com/jin-nuo/p/5440503.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!