Source Code
Problem: 2739 | User: | |
Memory: 440K | Time: 0MS | |
Language: G++ | Result: Accepted |
- Source Code
#include<stdio.h> #include<string.h> int number[10000]; int prime[3300]; int main() { int i,j; for(i=0;i<10000;i++) number[i]=1; for(i=0;i<3300;i++) prime[i]=0; number[0]=number[1]=0; int k=0; for(i=2;i<10000;i++) { if(number[i]) { prime[k++]=i; for(j=i*2;j<10000;j+=i) number[j]=0; } } int n=0; int temp=0; while(scanf("%d",&n),n) //输入格式还需要更熟练 { int count=0; for(i=0;i<n;i++) { temp=n; for(j=i;j<k;j++) { temp-=prime[j]; if(!temp) { count++; break; //break的用法 } if(temp<0) break; } } printf("%d\n",count); //'\n' 去掉会导致输出格式错误 } }
小结:
虽然是很水的题,但是刚接触并没有想到用素数筛。书写代码应该声明放在前面。先想好思路再下手!