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

求大佬改(C++)

Posted by lzm20100205 at 2021-05-04 15:21:10 on Problem 2689
#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
#include <string>
#include <algorithm>
using namespace std;
int n,m,s,f[50005],top,a[50005];
bool x[1000005];

void dabiao()
{
	int z=sqrt(n*1.0);
	for(int i=2;i<=z;i++)
	{
		int k=sqrt(i*1.0);
		bool falg=true;
		for(int j=2;j<=k;j++)
		{
			if(i%j==0)
			{
				falg=false;
				break;
			}
		}
		if(falg) a[++top]=i;
	}
	memset(x,true,sizeof(x));
	if(m==1) x[1]=false;
	for(int i=1;i<=top;i++)
	{
		int j=m/a[i];
		if(m%a[i]!=0) j++;
		if(a[i]>=m) j=2;
		for(;j<=n/a[i];j++)
			x[a[i]*j-m+1]=false;
				
	}
	for(int i=1;i<=n-m;i++)
		if(x[i]) f[++s]=i+m-1;
}

int main()
{
	//freopen(".in","r",stdin);
	//freopen(".out","w",stdout);
	while (scanf("%d %d",&m,&n)==2)
	{		
		dabiao();
		int a=f[1],b=f[2],c=f[1],d=f[2];
		for(int i=1;i<s;i++)
		{
			if(f[i+1]-f[i]<b-a)
			{
				a=f[i];
				b=f[i+1];
			}	
			if(f[i+1]-f[i]>d-c)
			{
				c=f[i];
				d=f[i+1];
			}	
		}
		if(s<2) printf("There are no adjacent primes.\n");
		else printf("%d,%d are closest, %d,%d are most distant.\n",a,b,c,d);
		s=0;
		top=0;
	}
	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