回复 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;
}
										
					
	