#include <cstdio> #include <iostream> #include <string> #include <cmath> using namespace std; bool isprime[70000]={0};//false素数,true不是 void findprime(){ isprime[1]=true;//1不是素数 for(int i=2;i<70000;i++){//从2开始 if(isprime[i]==false){ for(int j=i+i;j<70000;j=j+i){ isprime[j]=true;//倍数删去 } } } } int main(){ findprime(); string aa,bb; while(cin>>aa>>bb){ int count=0; int ahh=stoi(aa.substr(0,2)); int amm=stoi(aa.substr(3,2)); int bhh=stoi(bb.substr(0,2)); int bmm=stoi(bb.substr(3,2)); if(ahh>bhh){//跨越了一天 int asend=ahh*60+amm; int bsend=bhh*60+bmm; int dayendsend=23*60+59; int daybeginsend=0; for(int i=asend;i<=dayendsend;i++){ int hh=i/60; int mm=i%60; int num=hh*2500+mm; if(!isprime[num]){ count++; } } for(int i=daybeginsend;i<=bsend;i++){ int hh=i/60; int mm=i%60; int num=hh*2500+mm; if(!isprime[num]){ count++; } } cout<<count<<endl; } else{//同一天 int asend=ahh*60+amm; int bsend=bhh*60+bmm; for(int i=asend;i<=bsend;i++){ int hh=i/60; int mm=i%60; int num=hh*2500+mm; if(!isprime[num]){ count++; } } cout<<count<<endl; } } return 0; } |
Double click to view unformatted code.