Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

贴代码

Posted by hzoi_hexing at 2014-05-04 17:40:14 on Problem 3518
#include<cstdio>
#include<cstring>
#include<cstdlib>
using namespace std;
#define N 1299800
bool f[N];
int p[N];
int tot = 0;
void get_prime(){
	memset(f,0,sizeof(f));
	f[1] = 1;
	for (int i = 2; i <= N; i ++){
		if (!f[i]) {
			p[++tot] = i;
			for (int j = i; j <= N / i; j++)
				f[i * j] = 1;
		}
	}
	return;
}
int n;
int main(){
	get_prime();
	while (scanf("%d",&n),n){
		if (!f[n] || n == 1) puts("0");
		else{
			int l = 0, r = tot;
			int ans;
			while (l <= r){
				int mid = (l + r) >> 1;
				if (p[mid] < n) ans = mid,l = mid + 1;
				else r = mid - 1;
			}
			printf("%d\n",p[ans + 1] - p[ans]);
		}
	}
	return 0;
}

Followed by:

Post your reply here:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator