//游戏名:《素数奥秘》,作者xtmg·xsf.
//通过第n-1个素数与n+1个素数,并对倍数进行排除,猜测第n个素数
//游戏名:《素数奥秘》,作者xtmg·xsf.
//通过第n-1个素数与n+1个素数,并对倍数进行排除,猜测第n个素数
#include<iostream>
#include<math.h>
using namespace std;

int p[100005];

bool sushu(int x)
{
	for(int i=2;i*i<=x;i++)
	{
		if(x%i==0)return false;
	}
	return true;
}

int main()
{
	int m=1;
	bool kaishi=1;
	for(int i=2;i<=1000000;i++)
	{
		if(sushu(i)==true){
			p[m]=i;
			m++;
		}
	}
	
	while(kaishi==1){
	
		int n=1;
		

		cout<<"你要猜第几个素数:"<<endl;
		cin>>n;
		cout<<"第"<<n-1<<"个素数:"<<p[n-1]<<endl;
		cout<<"第"<<n+1<<"个素数:"<<p[n+1]<<endl; 
		bool a[p[n+1]-p[n-1]+4];
		for(int i=1;i<=p[n+1]-p[n-1]-1;i++)
		{
			a[i]=1;
		}
		int cnt=(p[n+1]-p[n-1])/5;
		cout<<cnt<<endl;
		
		while(cnt>0)
		{
			cnt--;
			int t=0;
			cout<<"你要排除谁的倍数(输入1即退出排除):";
			cin>>t;
			if(t==1)break;
			for(int i=1;i<=p[n+1]-p[n-1]-1;i++)
			{
				if((i+p[n-1])%t==0)a[i]=0;
			}
			cout<<"还剩:";
			for(int i=1;i<=p[n+1]-p[n-1]-1;i++)
			{
				if(a[i]==1)cout<<i+p[n-1]<<" ";
			}
			cout<<endl;
		
		}
		cout<<"输入你的答案:";
		int k;
		cin>>k;
		if(k==p[n])cout<<"恭喜你,猜对了"<<endl;
		else cout<<"抱歉,你猜错了,正确的是:"<<p[n]<<endl; 
		cout<<"输入0可再来一次:";
		int r;
		cin>>r;
		if(r!=0)break;
		 
	}
}