Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
Re:哈哈难得一次AC纪念一下In Reply To:哈哈难得一次AC纪念一下 Posted by:et1239063237 at 2012-07-18 01:12:13 #include<iostream> #include<cmath> using namespace std; //判断一个数是否为素数 bool isprime(int num) { //cout<<num<<endl; if(num==2||num==3||num==5) { //cout<<"num是素数"<<endl; return true; } if(num<2||!(num%2)||!(num%3)||!(num%5)) { //cout<<"num不是素数"<<endl; return false; } int n=7; int max=(int)sqrt((float)num); while(n<=max) { if(num%n==0) { //cout<<"num不是素数"<<endl; return false; } n+=2; } //cout<<"num是素数"<<endl; return true; } //判断一个数下一个质数是多少 int nextprime(int n) { while(1) { n++; if(isprime(n)) return n; } } int main() { int prime[1230]; int min,max,addition; int counter; prime[0]=0; prime[1]=2; for(counter=2;counter<1230;counter++) prime[counter]=nextprime(prime[counter-1]); int num; cin>>num; while(num!=0) { counter=0; max=1; min=0; addition=2; while(prime[max]<=num) { //cout<<"max:"<<prime[max]<<" min: "<<prime[min]<<" addition: "<<addition<<endl; if(addition==num) { counter++; max++; addition+=prime[max]; } else if(addition<num) { max++; addition+=prime[max]; } else if(addition>num) { addition-=prime[min]; min++; } } cout<<counter<<endl; cin>>num; } return(0); } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator