poj2793 素数和

简介: 题目链接:http://poj.org/problem?id=2739   #include using namespace std; int count=0; int prim[1234]={2,3}; void primer() { ...

题目链接: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;
 }

  

相关文章
|
10月前
|
Java C++
poj 1503 高精度加法
把输入的数加起来,输入0表示结束。 先看我Java代码,用BigINteger类很多东西都不需要考虑,比如前导0什么的,很方便。不过java效率低点,平均用时600ms,C/C++可以0ms过。
30 1
|
9月前
|
C++
筛质数、分解质因数和快速幂的应用
筛质数、分解质因数和快速幂的应用
52 0
|
3月前
Pseudoprime numbers(POJ-3641 快速幂)
Pseudoprime numbers(POJ-3641 快速幂)
|
9月前
|
Java
hdu 1262 寻找素数对
hdu 1262 寻找素数对
29 0
AcWing 726. 质数
AcWing 726. 质数
48 0
AcWing 726. 质数
AcWing 724. 约数
AcWing 724. 约数
60 0
AcWing 724. 约数
HDU-1262,寻找素数对(素数打表)
HDU-1262,寻找素数对(素数打表)
POJ-3641,Pseudoprime numbers(快速幂)
POJ-3641,Pseudoprime numbers(快速幂)