全re
查看原帖
全re
466348
polari楼主2023/9/6 15:13

感觉没什么问题 刚刚看讨论区有 一个说倍数那里a[]会溢出,不懂怎么改,还是什么别的问题

#include<bits/stdc++.h>
#define Maxn 10001000

using namespace std;

int T, a[Maxn], nex[Maxn],now=1;

int ssss()
{
	for(int i = 7;i <= Maxn; i++)
	{
		if(a[i])
			continue;
		else
		{
			bool bo1 = 0;
			int i0 = i;
			while(i0)
			{
				
				if(i0%10 == 7)
				{
					bo1 = 1;
					break;
				}
				i0 /= 10;
			}
			if(bo1 == 1)
			{
				for(int j = 2*i; j <= Maxn; j += i)
				{
					if(j>Maxn)break; 
					a[j] = 1;
				}
			}
		}
	}
}
int main()
{
	ssss();
	for(int i=2;i<=Maxn;i++)
	{
		if(a[i])
		{
			nex[i]=-1;
			continue;
		}
		nex[now]=i;
		now=i;
	}
	cin>>T;
	int x;
	for(int i=1;i<=T;i++)
	{
		cin>>x;
		cout<<nex[x];
	}
	
	
	return 0;
}
2023/9/6 15:13
加载中...