View Code of Problem 120

#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.


Back to problem 120