PTA 1013 数素数(20 分) C语言
#include <stdio.h>
#include <math.h>
int main()
{
int m,n;
scanf("%d%d",&m,&n);
int count = 0;//计第几个素数
int i;
int lineflag = 0;//换行标志
for(i = 2;; i++)
{
int j;
//判断素数
for(j = 2; j <= sqrt(i); j++)
{
if(i % j == 0) break;
}
if(j > sqrt(i)) count++;//计第几个素数
if(m <= count && count < n && j > sqrt(i))
{
lineflag++;
if(lineflag % 10 != 0)//每十个换一行
printf("%d ",i);
else
printf("%d\n",i);
}
if(count == n && j > sqrt(i))
{
lineflag++;
if(lineflag % 10 != 0)
{
printf("%d",i);
break;//当count = n时直接跳出循环
}
else
{
printf("%d\n",i);
break;
}
}
}
return 0;
}
该算法在n很大时效率比较高,但在m很小时,效率就比较低了,水平有限,暂时想不出来。