#include<stdio.h>
#include<math.h>
int sushu(int x)
{
int i,flag = 1,n=0;
if (x == 1||x==0)//注意0,1,2等特殊数字
flag = 0;
if (x == 2)
flag = 1;
for (i = 2; i <= sqrt(x); i++)//若全部遍历会超时
{
if (x%i == 0)
{
flag = 0;
break;
}
}
return flag;
}
int main()
{
int n, m;
scanf("%d", &n);
while (n--)
{
int i = 0;
scanf("%d", &m);
while (1)
{
if (sushu(m - i))
{
printf("%d %d\n", (m - i), i);
break;
}
if (sushu(m+i))
{
printf("%d %d\n", (m + i), i);
break;
}
i++;
}
}
}
求素数问题需要注意0,1,2等特殊数字的求解,一开始没有注意输入为1的情况,总是出错。
素数问题可以遍历x与2到x-1所有数字相除,若都有余则为素数。但是可以借助素数性质,只用遍历2到sqrt(x)的所有数,即可更加快速求出素数,所用时间更短