View Code of Problem 27

#include<iostream>
using namespace std;
//筛法求素数
const int Max=65536;
int a[Max]={0};
int list[65536]={0};
int nums=0;
void qiusushu(){
	for(int i=2;i<Max;i++){
		if(list[i]==0){
			a[nums]=i;
			nums++;
			//将该素数的所有倍数全部置为合数 
			for(int j=2;j*i<65536;j++){
				list[j*i]=1;
			}	
		}
		else continue; 		
	}
} 
int main(){
	qiusushu();
	int x,y;
	while(scanf("%d %d",&x,&y)!=EOF){
		if(x>y){
			int temp=0;
			temp=x;
			x=y;
			y=temp;
		}
		int sum=0;
		for(int i=0;i<nums;i++){
			if(a[i]>x&&a[i]<y){
				sum+=a[i];	
			}		
			
		}
		cout<<sum<<endl;
	}
}

Double click to view unformatted code.


Back to problem 27