Untitled

 avatar
unknown
plain_text
2 years ago
970 B
4
Indexable
#include <iostream>
#include<vector>
#include<stdio.h>
using namespace std;

bool prime[10001];
vector<int> primes;
void findprime(){ //建構質數表
    for (int i=0;i<10001;i++){//
        prime[i]=true;
    }
    prime[0]=false;
    prime[1]=false;
    for (int i=2; i<10001; i++){
            if (prime[i]){
              if((long long)i*i<10001){//
                for(int m=i*i; m<10001; m+=i)
                  prime[m] = false;
              }
              primes.push_back(i);//儲存已知的質數
        }
    }
  }
int main()
{
    int n;
    findprime();
    while(cin>>n){
            if(n==0) break;
          int l=0,ans=0,sum=0;
          for(int r=0;n>=primes[r];r++){
              sum+=primes[r];
              while(sum>n){
                  sum-=primes[l++];
             }
              if(sum==n){
                 ans++;
              }
         }
          cout<<ans<<endl;
    }
    return 0;
}
Editor is loading...