回复 18楼 xzlxzlxzl
其实求10^9开平方范围内的数就可以了~因为一个数如果包含了至少一个重复的质因子,那么它肯定可以被某个质数的平方整除
~

[code]/*~个性签名:bug是什么意思?bug是看上去没有可能的东西实际上是有可能做到的 就是这样~2018-08-08更~*/[/code]
~
~
程序代码:
#include<stdio.h>
#define MAX 40001
char isPrime[MAX+1];
int prim[MAX+1];
int primSqre[MAX+1];
int main( void )
{
int i=0;
int j=0;
int num=0;
int data[2];
scanf("%d",&data[0]);//输入一个数作为检查数据
for (i=2;i<=MAX;++i)
{
if (!isPrime[i])
prim[num++]=i;
for (j=0;j<num&&i*prim[j]<=MAX;++j)
{
isPrime[i*prim[j]]=1;
if (i%prim[j]==0)
break;
}
}
for (i=0;i<num;++i)
primSqre[i]=prim[i]*prim[i];
for (data[1]=data[0];;)
{
for (j=0;j<2;++j)
{
for (i=0;i!=num&&(data[j]%primSqre[i])&&primSqre[i]<=data[j];++i);
if (i!=num&&primSqre[i]>data[j])
{
printf("%d\n",data[j]);
j=3;
break;
}
}
if (j==3)
break;
if (data[0]>2)
--data[0];
++data[1];
}
return 0;
}
